2012-03-26 27 views
1

我的iOS应用程序与设备的日历集成在一起。在我的iPad上查看日历应用程序并点击左上方的日历按钮以选择要显示的日历时,我会看到一个名为“日历”的条目。在我的应用程序中,当我按照以下代码遍历可用日历时,“日历”列出了两次。一个是CalDAV的类型,另一个是本地的。我无法在其中一个中创建日历条目,我相信“本地”的一个,不知道为什么。iPad上列出的两个“日历”条目 - 无法使用EventKit写入日历

为什么我看到“日历”列出两次,当我没有看到它在iCal应用程序中列出两次?

 public static List<string> Calendars 
    { 
     get 
     { 
      var calendars = new List<string>(); 

      var ekCalendars = EventStore.Calendars; 
      if (ekCalendars != null && ekCalendars.Length > 0) 
      { 
       foreach (EKCalendar cal in ekCalendars) 
       { 
        if (cal.AllowsContentModifications) 
         calendars.Add(cal.Title); 
       } 
       calendars.Sort(); 
      } 
      return calendars; 
     } 
    } 
+0

[EKEventStore.calendars的可能重复返回不存在“日历”对象](http://stackoverflow.com/questions/9563981/ekeventstore-calendars-returns-non-existing-calendar-object) – poupou 2012-03-27 01:44:41

回答

0

为什么我看“日历”时,我没有看到它在iCal的应用列出两次列出了两次?

FWIW你not alone寻找一个answer

至于看到它两次?我无法使用自己的设备(运行iOS 5.1)复制此内容,即使没有配置任何电子邮件地址(或日历)也是如此。我所得到的(iCal)是iCloud(分割为主页工作)和其他(生日)日历。也许这是因为我启用了iCloud?

使用一些快速正hackish的C#代码都首页工作CalDav(设备只),生日Birthday(器件和模拟器),另一种,日历这是Local(在设备和模拟器上),但而不是在iCal中可见。

因此,确切地说额外,无证(迄今)Local日历。

+0

尝试调试,以便您在iPad上重复日历,然后您可能会看到它。那是我看到它的时候。我害怕过滤掉日历(本地),因为我不知道它的目的。我想知道它是否代表用户在设备设置中的默认日历选择?我将不得不修改日历区域中的设备设置,并查看具体效果。 – Neal 2012-03-27 12:08:51

+0

我已经在使用**相同的**结果(即只有一个**日历** - 命名条目)进行调试的时候试过这个。 * Default *日历由'DefaultCalandendarForNewEvents'属性表示(对我来说),它在** Work **上设置,输入'CalDav'(默认值,应该可以使用** Settings **修改)。今天早上,我还尝试使用iPad(运行电子邮件)运行iOS 5.1,并获得**相同的结果。我最初的猜测是这个* ghost *日历是在脱机时使用的(没有iCloud/Caldav访问),但切换到飞行模式并没有改变任何东西... – poupou 2012-03-27 12:22:33

0

我可以证实我也看到了这一点。调试打印的详细信息:

EKCalendar < 0x1aa6b0> {title = Calendar; type = Exchange; allowsMo​​dify = YES;颜色=#0E61B9;}, EKCalendar < 0x1aa790> {title = Calendar; type = Local; allowsMo​​dify = YES;颜色=#F64F00;},

更多信息: 我有一个应用程序,功能像传统的日历应用程序,并允许您选择一个日历,然后显示该日历的条目。从我的调试和使用我的应用程序,“日历”应用程序中都会出现相同的事件。 “复制”日历在日历应用中不可见。此外,当我向我的iPhone添加GMAIL日历以测试我的应用中的多个日历时,重复出现。 “重复”日历不会出现在模拟器中。我在之前的IOS版本上进行了大量的日历测试,之前从来没有见过这样的内容......它是否与IOS 5.1一样新?

我搜索IOS开发板,只有一个其他人发布相同的问题。我回答,并会在这里让你知道我发现了什么。

如果您有兴趣...这里是过滤出来的代码...

EKEventStore *eventStore = [[EKEventStore alloc] init]; 
for (EKCalendar *cal in eventStore.calendars) { 
    if (cal.type != EKCalendarTypeLocal) { 
     // do something 
    } 
} 
0

如果您启用了iCloud,您将看不到本地日历。

我相信这是为用户设计的。当您打开iCloud时,它提供将您的本地日历合并到iCloud中。启用iCloud后,iOS会隐藏本地日历,即使是以编程方式创建的日历,也不会在本地日历中创建事件,然后想知道为什么他们会与iCloud同步。

检查http://www.raywenderlich.com在EKVentKit的一本体面的教程在他们的书。

但是当你打开的iCloud和关闭没有书或教程我发现讲理智约iCloud中创建日历或本地和问题造成的......

+0

我启用了iCloud,但不使用它进行日历同步,我在我的iPad上查看此问题。 – Neal 2012-05-08 14:48:24