2012-09-21 44 views
2

我新的堆棧溢出,並已編程才一年,所以還是這個東西是一個新手(即,請多多包涵!)。我正在升級使用sqlite數據庫存儲用戶生成的數據的xcode 3中創建的舊應用程序。升級後的應用程序需要與iCloud一起工作,所以我決定切換到核心數據(因爲自己的sqlite無法與iCloud同步)。我沒有問題實現核心數據結構,但我的問題是如何讓用戶保留他們現有的數據。用戶數據升級

我已經查看了這些主題:How to import a pre-existing sqlite file into Core Data?Need To Populate Core Data From SQLite Database,雖然我可以創建一個實用程序來導入現有的數據,但這是沒有用的,因爲沒有初始應用程序包的現有數據,數據由用戶存儲。

我真的很感謝所有幫助我能得到這一點,在一個大的結在它已經完全綁嘍!也許我最好避免使用核心數據,找到另一種解決方案來保存iCloud中的sqlite數據?

在此先感謝!

回答

2

您可以使用核心數據。創建您的核心數據模型和堆棧,並且您的遷移過程包括從sqlite數據庫查詢數據卡夾以將它們插入到核心數據數據庫中。

比方說,你在你的sqlite的三個表。人員,車輛和財產。您將在覈心數據模式下創建等效實體,然後您必須從這些表中查詢信息以將其插入核心數據。您需要熟悉如何將數據插入核心數據庫以及如何在多線程環境中使用它(以避免在遷移過程中鎖定應用程序)。

這裏有幾件事情要記住:

  • 嘗試在塊保存。不要將所有內容加載到內存中,而且還必須避免在NSManagedObjectContext實例中進行多次保存調用。上下文中的每個保存呼叫都是IO。平衡IO和內存取決於您的數據使用情況。
  • 索引您現有實體上可以編入索引的屬性。這將幫助您建立關係(如果有的話)
  • 在開始遷移之前詢問系統的時間。使用UIApplication的beginBackgroundTaskWithExpirationHandler:爲了確保有足夠的時間從系統繼續遷移(以防用戶將應用程序發送到後臺)。
  • 不要打擾清理sqlite數據庫。完成後刪除數據庫文件。

這些都是一些事情,我可以給你的建議現在。如果我想到更多,我會編輯這篇文章。祝你好運。

+1

太棒了,這就是信息的負荷,並幫助我指出正確的方向,感謝! –