2017-03-15 97 views
9

目前,我正在學習如何使用CloudKit框架和缺乏文檔或例子來說明如何同步核心數據和CloudKit。如何同步核心數據和CloudKit之間記錄有效

我曾經看過獻給CloudKit所有WWDC視頻(2014年,2015年,2016),但他們沒有告訴我們如何實現與核心數據同步。我找不到任何新的示例,教程或書籍,顯示如何實施此同步。

我知道使用CloudKit(不是Convenience API)的Operations API是有效的,並且可以在專門用於CloudKit的新WWDC 2016視頻中說明更改,但CoreData映射是一個真正的問題。

例如,假設我想創建一個類似於票據應用的應用程序。在離線狀態下,用戶可以創建自己的筆記並與他們一起保存到他的核心數據庫中。當設備上線時,應用程序將檢查服務器上發生的變化並將新創建的記錄保存到服務器(CloudKit)。

當應用程序啓動時,它也獲取了從CloudKit變化,如果有變化,它將更新本地高速緩存(核心數據)有了新的變化。

我很感激有同步的常見圖案。在哪裏放置與Core Data方法同步以及它們應該是什麼樣子?

希望得到任何信息或幫助。

我使用夫特3時,Xcode 8,的iOS 10.

+0

Adelmaer,它具有記錄,上次更新,上次訪問,權限等等等等,你可以將這些數據複製到你的核心數據,當您連接,看看是否有任何更新做交叉檢查cloudkit將元數據存儲。你也應該看看這個蘇答案,可能是東西在這裏http://stackoverflow.com/questions/24509782/saving-modified-data-in-cloudkit?rq=1 – user3069232

回答

4

核心數據已經提供了與同步到iCloud的能力給用戶。沒有必要使用CloudKit。

Design For Core Data In iCloud

但是,是的,隨着iCloud的核心數據已被棄用。即使如此,它還有not been discontinued,並且蘋果公司目前沒有立即停止它的計劃,他們只是想阻止它的使用。但它也有合理化多個設備更新的問題。

在任何情況下,我一直在尋找到如何與雲套件自己做的這個問題。兩個答案;首先是使用以下內容;

Seam in GitHub

第二是做手工;

Designing for CloudKit

這裏的關鍵是,雲計算套件需要記錄的元數據,以便能夠可靠地處理記錄更新,所以你要保存元數據在你的核心數據的數據庫。 CKRecord類包括一個方法encodeSystemFields(with:),它將把這些字段編碼爲可存儲在數據庫中的數據記錄,然後在需要恢復CKRecord時可以使用適當的解碼器。

無論如何,我即將開始自己做這件事。當我擁有它時,我會用更多的信息來更新它。

+0

也不敢保證,但我不認爲核心數據可以進行iCloud共享,所以如果您需要使用CloudKit實現該功能。因爲iOS的10.從來沒有做過任何 – Jonny

+0

CoreData的iCloud已被棄用。 – Andy

+0

我的反應點,走出第三條線。除非說它從來沒有奏效是愚蠢的。但是,是的,現在有更好的方法來解決這個問題。 –

0

蘋果最近發佈了一個似乎回答這個問題的指南。查看Apple的Maintaining a Local Cache of CloudKit Records以瞭解如何在設備上存儲CloudKit數據。

雖然本指南未提供的示例代碼寫入裝置,它回答這個問題的其餘部分。這將告訴您如何從CloudKit獲取更改並創建可以存儲在設備上的數據。