簡體   English   中英

icloud核心數據同步

[英]icloud core data sync

我開始構建一個iOS應用程序,它將利用核心數據並通過iCloud將其數據與其他設備同步。 我正在考慮提供一個“同步”按鈕,以便不隨時通過iCloud的數據修改數據。 然后會出現以下情況: -

用戶A正在設備A上工作並添加兩條記錄。 用戶B當前正在使用設備B,而不是按下同步按鈕。 在晚上,用戶B決定更新設備B中的數據並按下同步按鈕(我對這種情況有以下問題): -

  1. 在按下同步按鈕后,方法mergeChangesFromContextDidSaveNotification插入這兩個記錄嗎? (我認為它可以。但是,只是想在繼續這個模型之前確認)
  2. 在將它們插入設備B的數據庫之前,是否可以訪問這兩個對象的屬性?

我不認為iCloud是專為您的用例而設計的。 iCloud 為同一用戶在設備之間同步數據,即在多個設備中使用相同Apple ID登錄的數據。 這個想法是,當用戶在不同的設備上打開應用程序時,他可以繼續使用他之前在其他設備上創建/修改的數據。

更新中存在相當多的延遲,因此即使您通過“同步”按鈕啟用/禁用同步,也無法保證實際的交付時間,並且在某些情況下可能需要很長時間,具體取決於連接速度,機會,狀態Apple服務器等

相反,您可以根據自己的服務器和數據方案設計自定義解決方案。

既然你正在使用帶有核心數據的iCloud--不,你不能做這樣的事情。 當iCloud同步Core Data更改時,它會在后台執行此操作。 它會下載更改,將它們保存到數據存儲中,然后在完成后告訴您已經發生的更改。 調用mergeChangesFromContextDidSaveNotification不會保存更改 - 它們已經保存。 該調用的作用是使用持久性存儲中的新數據更新托管對象上下文。 在新的插入已經發生之后,您會收到通知。 想想“導入”通知,好像它是來自另一個線程的“保存”通知,告訴你已完成的事情。

現在, 如果您在收到導入通知時已經加載了托管對象 ,則可以將其當前屬性與最新的傳入更改更新中的屬性進行比較。 如果您還沒有內存中的對象,則無法獲取其舊值,因為它們已被覆蓋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM