I was wanting to learn the iCal API for the Mac so I downloaded the sample application called SimpleCalendar at the Apple Developer Connection website (you’ll need to log in with your ADC member account info). Apparently, when the sample code was last modified it was with code that didn’t make it into the release build of Leopard. The application will compile in xCode 3.0, but it won’t run properly (the calendar never displays).
To fix it, all you need to do is fix all of the warnings that come up when you do a compile. I’ve gone to the trouble of finding the correct API, so I figured I would highlight it here. The FileMerge results between my fixed version of Calendar.m (the offending file) and the original version show that there are four changes. They are as follows:
Line No. | Original | Fixed |
---|---|---|
74 | NSPredicate *eventsForThisYear = [NSPredicate eventPredicateWithStartDate:startDate endDate:endDate calendars:[[CalCalendarStore defaultCalendarStore] calendars]]; |
NSPredicate *eventsForThisYear = [CalCalendarStore eventPredicateWithStartDate:startDate endDate:endDate calendars:[[CalCalendarStore defaultCalendarStore] calendars]]; |
193 | NSPredicate *uidPredicate = [NSPredicate eventPredicateWithStartDate:startDate endDate:endDate UID:uid calendars:[[CalCalendarStore defaultCalendarStore] calendars]]; |
NSPredicate *uidPredicate = [CalCalendarStore eventPredicateWithStartDate:startDate endDate:endDate UID:uid calendars:[[CalCalendarStore defaultCalendarStore] calendars]]; |
240 | NSPredicate *uidPredicate = [NSPredicate eventPredicateWithStartDate:startDate endDate:endDate UID:uid calendars:[[CalCalendarStore defaultCalendarStore] calendars]]; |
NSPredicate *uidPredicate = [CalCalendarStore eventPredicateWithStartDate:startDate endDate:endDate UID:uid calendars:[[CalCalendarStore defaultCalendarStore] calendars]]; |
280 | [[CalCalendarStore defaultCalendarStore] saveEvent:object span:CalSpanThisEvent]; | [[CalCalendarStore defaultCalendarStore] saveEvent:object span:CalSpanThisEvent error:nil]; |
I’ve successfully built the application without any warnings or errors and it now will run. On to learning what the code is actually doing.