3

尝试为 iOS 实现 iCloud 日历同步。这个想法是从我的应用程序创建一个新日历,并在 iCloud 同步实际开启时将其与 iCloud 同步。要获得相应的来源,我使用以下代码:

EKSource* localSource=nil;

for (EKSource* source in self.eventStore.sources) { if(source.sourceType == EKSourceTypeCalDAV && [source.title isEqualToString:@"iCloud"]) { localSource = source; 休息; }

}

然后在该源中创建一个日历并保存。

当 iCloud 同步打开并且 iCloud 的日历同步也打开时,从 iPhone-> 设置-> iCloud-> 日历它工作得很好。从上述设置关闭日历同步后,理论上它不应该允许在该存储中创建日历。但实际上即使在这种情况下,它也允许从我的应用程序中获取相应的 iCloud 存储并创建/保存新日历。创建新日历后,它不会显示在 iPhone 的日历列表中。但是当您登录到 iCloud Web 界面时,您会看到很多与您刚刚添加的名称相同的日历。具有该名称的日历的数量越来越多。就像 iCloud 日历同步中存在无限循环问题一样。到目前为止,像这样的接缝'

4

1 回答 1

0

不确定您是否想通了,如果您想通了,请发布您的解决方案:-)

但这似乎是一个错误——我刚刚在我的 Mac 上检查了 iCal,它加载了重复的日历。

只是弄清楚,但我认为我正在工作的一些粗略代码是在 EKSource 中创建一个日历,然后检查该日历。

像这样的东西:

-(BOOL)testCal {
  BOOL cal = 0;

  NSUInteger counter = 1;
  for (EKCalendar *thisCalendar in [[DGEK eventStore]calendars] ){
    NSLog(@"%@", thisCalendar.title);
    if ([thisCalendar.title isEqualToString:@"YourCalName"]) {
        cal = YES;
        return cal;
    }
    counter++;
  }
  return cal; 
}

我认为这行得通。目前只是做一些更多的测试。

如果 Cal 不存在,我将使用以下内容获取默认源:

source = [[[self eventStore] defaultCalendarForNewEvents] source];

希望有帮助。

于 2012-12-08T08:56:35.397 回答