2015-12-22 24 views
1

我正在循環使用約100個爲每個使用EventKit創建事件的對象。直到所有對象都保存並且知道每個對象的calendarIdentifier被成功獲取後,我纔會「提交」。然而,大約10-15%的事件從未在設備日曆或在線上顯示。這隻適用於Google日曆。 iCloud和本地工作很好。保存多個Google日曆事件時缺少EKEvents

創建多個這樣的活動時,我明白,這是最好的使用方法:

[eventStore saveEvent:event span:EKSpanThisEvent commit:NO error:&error]; 

...和

[eventStore commit:&error]; 

...已創建的所有事件之後。我也嘗試通過每個循環進行承諾,並可預見地發現通信中斷時出現錯誤。感謝任何幫助。

+0

我有完全相同的問題,並自iOS8以來。我也試過在stackoverflow以及,但沒有運氣:http://stackoverflow.com/questions/28665139/batch-saving-ekevents-to-google-calendar-causing-loss-of-random-events 讓我知道你是否找到了解決方案! Brgds。 – fisher

+0

這仍然讓我發瘋。我檢查了你的線程,確實......完全一樣。你是否遇到過解決方案? –

回答

0

我遇到了類似的問題。當我刪除一個EKEvent實例時,會發生我的問題,然後立即保存一個新的EKEvent實例。有時(可能是5箇中的3個),刪除的事件再次出現。刪除沒有返回任何錯誤。對我來說,它看起來沒有成功提交,那麼EKEventStore會自動回滾「應該刪除」的事件。我嘗試了所有不同的方式來處理處理,例如,將提交設置爲「是」或「否」,再次請求訪問,並且只有授予的訪問權限爲「是」,然後才能啓動該過程。但沒有區別。我花了幾個晚上試圖找出是什麼原因造成的,但沒有任何線索。

然後我將刪除的EKEvent的eventIdentifier添加到數組中,並再次驗證(在獲取事件之前)。如果仍然存在,請再次刪除。到目前爲止,它運作良好。這是一個骯髒的解決方案,但至少它工作。

因此,我建議其他用戶在使用EventKit使用Google日曆進行批量操作時嘗試類似的解決方案。在下次獲取之前再次檢查eventIdentifiers。如果某些eventIdentifiers應該或不應該在那裏(使用[EKEventStore eventWithIdentifier]),請再次添加或再次刪除它。

只是我2美分。