我在使用交换电子邮件帐户在我的ipad上更新日历活动时遇到问题。它会创建新事件没有问题,但在更新时,它会创建另一个,而不是更新现有的。一些事情
抛出的错误是:
Error getting event with identifier 9E678016-F8E4-46B1-9043-E54E09A148F0:5A89FFAF15B1408386A9CBD518BBDD770: Error Domain=EKCADErrorDomain Code=1010
这是我正在使用的代码。
[self.eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (granted) {
dispatch_sync(dispatch_get_main_queue(), ^{
NSString *appleEventId = [item valueForKey:@"appleEventId"];
EKEvent *currentEvent = [self.eventStore eventWithIdentifier:[item valueForKey:@"appleEventId"]];
if (currentEvent){
NSLog(@"LOG101: found an event with %@",appleEventId );
[self createEvent:currentEvent inEventStore:self.eventStore forActivity:item];
}
else{
NSLog(@"LOG101: COULD NOT FIND an event with %@",appleEventId );
EKEvent *event = [EKEvent eventWithEventStore:self.eventStore];
[self createEvent:event inEventStore:self.eventStore forActivity:item];
}
completionHandler(YES);
});
}
else{
dispatch_sync(dispatch_get_main_queue(), ^{
completionHandler(NO);
});
}
}];
(create event会执行一系列客户逻辑,但最终会调用以下内容来创建事件)
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];
这令人沮丧,因为代码适用于除了交换之外的所有其他内容。任何提示/建议都会很棒。感谢
答案 0 :(得分:0)
我已经因为类似的问题而拔毛了两天了!
eventIdentifier的文档说明:
"如果事件的日历发生变化,其标识符很可能也会发生变化。" https://developer.apple.com/reference/eventkit/ekevent/1507437-eventidentifier?language=objc
calendarIdentifier的文档也说明了:
"与日历完全同步将失去此标识符。您应该有一个计划,通过缓存其他属性来处理标识符不再可读的日历。" https://developer.apple.com/reference/eventkit/ekcalendar/1507380-calendaridentifier?language=objc
我认为可以放心,如果日历已同步,您可以在本地保存日历或事件标识符以供日后使用: - (