2011-06-16 71 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

相关问题