2011-06-16 69 views
18

我對iOS和編程相對比較陌生,之前我做過一個應用程序,但它使用了一個plist來存儲,我將它保存到文檔文件夾中。現在,我正在考慮切換到Core Data,但它看起來有點複雜,我不確定它是否能夠滿足我的需求。我將要繪製一些我需要繪製的數據,所以我不確定Core Data是否最適合此,因爲我似乎無法在.xcdatamodeld文件中創建數組類型。核心數據有哪些其他優點?速度更快嗎?更容易使用(一旦你設置了)?使用核心數據有什麼優勢? (而不是plist)

更新:對於任何人想知道的,我完成了應用程序,完全值得它學習如何使用核心數據,而且我原本以爲這並不複雜。與plists做這將是地獄。他們這樣做的方式一開始似乎有點神祕,但如果你剛開始使用它,你會得到它。這些關係真的很棒。

+0

你可能會發現[這個答案在覈心數據和SQLite之間的差異](http://stackoverflow.com/questions/523482/core-data-vs-sqlite-3/524301#524301)是有幫助的.. – 2011-06-16 19:40:23

回答

24

了我的頭頂部有幾個優點:

  • 很多更好的內存管理。用plist你必須把整個東西加載到內存中;使用核心數據只需要加載當前使用的對象。而且,一旦加載對象,它們通常是佔位符「故障」對象,其屬性數據在您需要時才加載。
  • 與上面相關的是,當您有更改時,您只能保存更改的對象,而不是整個數據集。
  • 你可以直接讀/寫你的模型對象,而不是將它們轉換成類似於NSDictionary的東西。
  • 當您從數據存儲中獲取對象時,內置對象排序。
  • 豐富的謂詞系統,用於搜索感興趣對象的數據集。
  • 實體之間的關係直接作爲相關對象的屬性進行處理。用plist你需要做一些事情,比如存儲關係的對象ID,然後查找相關的對象。
  • 可選自動驗證屬性值。

數據模型不使用數組,但「一對多」關係被建模爲集合。

+0

+1。愛你解釋每個問題的方式。 #FanOfTom。 – Bhavin 2013-05-23 11:54:32

4

這是你保存的問題。對於簡單的字符串,數組,字典,使用plist很好。對於更復雜的東西(數據,圖像,非對象信息)或者具有多對多關係的東西(思考歌曲與專輯之間的關係,或者照片與攝影師之間的關係),那麼類似更強大解決方案的東西可能會更像SQLite。

CoreData是一個基於SQLite的基於Objective-C的包裝。如果你認爲你可能想要更復雜一點的話,CoreData可能是一條可行的路。

如果你需要一個快速的教程中,我會找:http://www.raywenderlich.com/934/core-data-tutorial-getting-started

這讓我去,讓我學習的基礎知識CoreData的工作。

祝你好運!

+4

儘管Core Data使用SQLite(在iPhone上),但這是一個實現細節,您不應該將Core Data看作是一個包裝。這是一個對象持久性框架。它可以幫助你保存和恢復磁盤。 – kubi 2011-06-16 20:16:29

相關問題