2011-07-09 95 views
1

我有一個iphone應用程序,它使用coredata來存儲它的內容。用戶經常問我是否可以提供一種在他們的移動設備(ipod/iphone/ipad)之間同步數據的方式。截至目前,我不知道如何實現這一目標。 我發現zsync,但這似乎取決於應用程序的osx版本(我沒有)。我還閱讀了關於即將到來的iclouds同步功能,並且它似乎是我需要的 - 但是我認爲它不可能同步coredata內容,但是僅基於文本的內容(例如xml存儲文件)。這是真的?如何在設備之間同步coredata?

我想到的另一種方式是濫用eventkit api通過用戶提供的日曆進行同步。因爲我的應用程序主要是管理事件,可以選擇將其存儲在用戶日曆中(除了coredata存儲),通過日曆同步對我來說似乎很好。但是我認爲同步可能會中斷,例如當用戶選擇不同步整個日曆,但只有3個月在設備設置/帳戶設置。

任何人都知道我的方法應該如何?有小費嗎?

回答

1

將設備同步到設備(如果這是你想要實現的)可能會非常棘手。你可以實現你自己的發現和數據傳輸協議,並以這種方式工作,但這可能是相當多的工作。

假設您已經有一臺具有某種形式的註冊/登錄系統的服務器,將設備同步到服務器到設備會更簡單一些。然後,您只需要一種將當前數據庫狀態傳達給服務器的方法,然後再從服務器向下返回到其他設備。再次說明這樣做有一定的工作量,但至少要弄清楚哪些設備與哪些設備同步以及如何將數據從一個設備傳輸到另一個設備的邏輯都隱含在服務器的工作中。

至於iCloud,通過它同步的程序化內容需要從UIDocument派生,因此它不會幫助您使用通用的Core Data實體。

如果您正在尋找一種即開即用的解決方案,可以將您的所有核心數據內容從一臺設備同步到另一臺,而無需自定義代碼,那麼確實沒有一個。您可以合理獲得的最接近的方式是將應用程序使用的整個.sqlite文件從一個設備發送到另一個設備,覆蓋目標設備.sqlite文件。如果你的同步只需要是單向的,那很好,但顯然不適用於其他用例。也許你可以在iCloud上使用這個模型,如果你能把它作爲一個原子實體同步你的應用程序的整個.sqlite文件。

相關問題