我目前正在测试一个应用程序,该应用程序通过 XML 下载特殊事件列表并在列表中提供它们,然后用户可以将其添加到他们的日历中。单击“将事件添加到日历”按钮时,该函数会正确触发,使用正确的日期设置事件并且该saveEvent
函数返回noErr
,但该事件永远不会出现在日历中。我检查了两部不同的 iPhone,并且两者的行为相同。我不确定出了什么问题,因为似乎没有任何问题。
我的事件代码如下:
- (IBAction) addEvent:(id)sender
{
EKEventStore *eventStore = [[[EKEventStore alloc] init] autorelease];
EKEvent *newEvent = [EKEvent eventWithEventStore:eventStore];
newEvent.title = _event.name;
CFTimeZoneRef zone = CFTimeZoneCopySystem();
CFAbsoluteTime absTime = CFGregorianDateGetAbsoluteTime([_event getStartDate], zone);
NSDate *start = [(NSDate *)CFDateCreate(nil, absTime) autorelease];
absTime = CFGregorianDateGetAbsoluteTime([_event getEndDate], zone);
NSDate *end = [(NSDate *)CFDateCreate(nil, absTime) autorelease];
CFRelease(zone);
newEvent.startDate = start;
newEvent.endDate = end;
newEvent.allDay = [_event getAllDay];
newEvent.notes = _event.description;
[newEvent setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore saveEvent:newEvent span:EKSpanThisEvent error:&err];
if (err == noErr) {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Event Added"
message:[NSString stringWithFormat:@"%@ successfully added to calendar!", _event.name]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
}
在干净+重建之后,我确实在日历中显示了我的一个事件,但是当我上下滚动时它似乎消失了。我添加的另一个日期也发生了同样的事情,然后第三次测试什么也没有。当我滚动和/或退出并重新进入日历时,是否有什么东西会删除这些日期?