【问题标题】:iCloud calendar synchronization issue while creating calendar from application从应用程序创建日历时出现 iCloud 日历同步问题
【发布时间】:2012-11-17 09:48:16
【问题描述】:

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

EKSource* localSource=nil;

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

}

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

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

【问题讨论】:

    标签: ios calendar icloud icalendar


    【解决方案1】:

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

    但这似乎是一个错误 - 我刚刚在我的 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];
    

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-01-16
      • 2018-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多