尝试为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问题,无法在任何地方找到任何报告。
答案 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];
希望有所帮助。