同步到交换帐户时,iOS无法更新日历事件

时间:2016-03-28 13:50:15

标签: ios email calendar duplicates exchange-server

我在使用交换电子邮件帐户在我的ipad上更新日历活动时遇到问题。它会创建新事件没有问题,但在更新时,它会创建另一个,而不是更新现有的。一些事情

  • 以下代码适用于任何其他类型的电子邮件帐户(例如gmail)
  • 如果我没有电子邮件(因此它只是写入本地日历),
  • 下面的代码可以正常工作
  • 是的,我已经检查过我的交换电子邮件已启用日历

抛出的错误是:

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];

这令人沮丧,因为代码适用于除了交换之外的所有其他内容。任何提示/建议都会很棒。感谢

1 个答案:

答案 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

我认为可以放心,如果日历已同步,您可以在本地保存日历或事件标识符以供日后使用: - (