从应用程序创建日历时的iCloud日历同步问题

时间:2012-11-29 10:34:02

标签: ios calendar icloud icalendar

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

EKSource * localSource = nil;

for(EWSource * self.eventStore.sources中的source) {     if(source.sourceType == EKSourceTypeCalDAV&& [source.title isEqualToString:@“iCloud”])     {         localSource = source;         打破;     }

}

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

当iCloud同步开启且iCloud的日历同步也开启时,从iPhone->设置 - > iCloud->日历它正常工作。 从理论上讲,在从上述设置中关闭日历同步之后,它不应该再允许在该商店中创建日历。但实际上甚至在这种情况下它允许从我的应用程序获得相应的iCloud存储并创建/保存新日历。 创建新日历后,它不会在iPhone的日历列表中显示。但是当您登录iCloud Web界面时,您可以看到许多与您刚刚添加的名称相同的日历。具有该名称的日历数量越来越多。类似的接缝在iCloud的日历同步中存在无限循环问题。到目前为止这样的接缝是一个iOS问题,无法在任何地方找到任何报告。

1 个答案:

答案 0 :(得分: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];

希望有所帮助。