2012-08-22 45 views
4

我正在致力於增強現有的應用程序以使用iCloud,因此可以在多個設備上訪問相同的數據。將現有的SQLite iOS應用程序遷移到iCloud:iCloud的原子是多少?

我打算使用基於文檔的存儲並使用文件包(即文件的目錄代表單個文件並由NSFileWrapper處理)。

我的主要問題是:文件包更新保證是原子?如果我打開應用程序,並且單個文檔包中的幾個文件已被更改,那麼iOS會下載它們,然後只在所有子文件存在並就地存在時通知我的應用程序?或者是否存在文件逐個出現的風險,給我帶來可能不一致的包?

此外,我現有的應用程序使用SQLite(不是通過核心數據,而是通過自定義包裝)。應用程序的某些部分顯然需要性能良好的索引SQL數據庫。因此,我的計劃是使用iCloud數據作爲參考存儲,出於性能原因(或其他地方嚴格限於設備的地方),將SQLite數據庫保留在Caches目錄中,並根據iCloud中的內容更新數據庫。用戶在應用程序中所做的更改將記錄在iCloud和本地數據庫中。這是瘋狂還是合理?

+0

怎麼ü結束啓動程序? – Gmu

回答

0

所以我的回答你的主要問題是學術,因爲我沒有試驗基地測試這個,但是......

因爲你的目錄作爲一個單一的實體處理,如果你使用的座標該實體作爲您的NSManagedDocument操作的項目。

我正在從學習使用NSManagedDocument來管理iCloud的基礎上我的筆記這樣的回答:

// Conflict 
// - what if a device detached from the network changed a document that another device changed? 
// and then the detached device re-attached and tried to apply the change and it conflicted? 
// one must manage the conflict by looking for the InConflict document state. 
// - when it happens, a decision must be made which version of the document to use and/or 
// manage changes. probably want to set NSManagedObjectContext's mergePolicy to other than 
// default (Error). 
// - then update the old, conflicting NSFileVersion to no longer conflict (and remove those 
// versions). 

(是的,我走在Objective-C註釋格式記錄。)

相關問題