2012-03-26 26 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