2014-02-13 34 views
0

我有一個CoreData應用程序(使用https://github.com/lhunath/UbiquityStoreManager),由iCloud支持。在一個用例中,具有本地存儲的用戶啓用iCloud(數據已存在)。我想提示用戶決定是將本地數據遷移到iCloud還是僅使用iCloud版本。作爲其中的一部分,我想在iCloud中顯示設備名稱和版本的最後同步日期。CoreData和iCloud;我如何跟蹤上次保存到雲端的設備?

我一直在修補我的NSPersistentStore的元數據,但似乎沒有同步到iCloud。

有什麼建議嗎?

回答

0

您可以使用iCloud的鍵值存儲來存儲設備名稱&上次同步的日期。

+0

是的,認爲。不幸的是,不能保證k/v商店將與iCloud文檔同步。 –

0

對iCloud文件執行元數據查詢並檢查iCloud中最近的事務日誌文件。請參閱下面的鏈接,查看使用此方法的示例應用程序,以檢查應用程序是否與iCloud正確同步。
http://ossh.com.au/design-and-technology/software-development/sample-library-style-ios-core-data-app-with-icloud-integration/

編輯: 我才意識到我沒有得到實際的設備名稱,但一旦你找到最近的日誌文件,然後用它來獲取設備。請注意,此通話可能很昂貴。

NSFileVersion *openedVersion = [NSFileVersion currentVersionOfItemAtURL:fileURL]; 
    return openedVersion.localizedNameOfSavingComputer; 
0

毫無疑問,不受歡迎的建議是「不要」。試圖確定在任何時候iCloud中的內容都會讓你處於不穩定的狀態。你大概可以在大多數情況下都能正常工作,但總是會出現故障。

如果您在第一次啓用iCloud時確實需要導入一些數據,我建議您只需要導入數據,然後在iCloud數據進入時進行重複數據刪除。聽起來很醜陋,這是唯一真正保證可以使用的方法蘋果的方法。

值得一看其他Core Data同步框架,如TICDS和Ensembles。他們對數據身份採取更爲理智的方法,這意味着您可以避免整個重複數據刪除步驟。 (披露:我開發合奏)

+0

我同意。上面的鄧肯的建議很方便,但iCloud並沒有提供任何其他設備是否已經上傳更新的保證,以及是否有其他設備已經下載了所有更新。 –

+0

另外,感謝Ensembles的負責人。我已經檢查過TICDS,但不喜歡它,因爲數據仍由SQLite商店提供支持,該商店的內部是Apple私有API的一部分。 –