使用Core Data有哪些优势? (而不是plist)

时间:2011-06-16 19:13:02

标签: iphone objective-c core-data plist

我对iOS和编程比较陌生,之前我做了一个应用程序,但它使用了plist进行存储,我将其保存到文档文件夹中。现在,我正在考虑切换到Core Data,但它看起来有点复杂,我不确定它是否适用于我想要的东西。我将有一堆数据需要绘制,所以我不确定Core Data是否最适合这个,因为我似乎无法在.xcdatamodeld文件中创建数组类型。 Core Data还有哪些其他优势?它更快吗?更容易使用(一旦你设置)?

更新:对于任何想知道的人,我完成了应用程序,了解如何使用Core Data是完全值得的,而且我原本以为它的复杂程度要低得多。用钳子做这件事本来就是地狱。他们开始做这件事的方式起初看起来有些神秘,但如果你刚开始使用它,你就会明白它。这种关系真的很棒。

2 个答案:

答案 0 :(得分:25)

我头脑中的一些优势:

  • 更好的内存管理。使用plist,你必须将整个东西加载到内存中;使用Core Data时,只需要加载您当前使用的对象。此外,一旦加载了对象,它们通常是占位符“错误”对象,其属性数据在您需要之前不会加载。
  • 与上述相关,当您进行更改时,您只能保存更改的对象,而不能保存整个数据集。
  • 您可以直接读取/编写模型对象,而不是将它们转换为类似NSDictionary的内容。
  • 从数据存储中获取对象时内置的对象排序。
  • 用于搜索感兴趣对象的数据集的丰富谓词系统。
  • 实体之间的关系直接处理,作为相关对象的属性。使用plist,您需要执行诸如为关系存储对象ID之类的操作,然后查找相关对象。
  • 可选的属性值自动验证。

数据模型不使用数组,但“to-many”关系被建模为集合。

答案 1 :(得分:4)

这是你拯救的问题。对于简单的字符串,数组,字典,使用plist是很好的。对于更复杂的东西(数据,图像,非对象信息)或具有多对多关系的东西(想想歌曲与专辑之间的关系,或照片与摄影师之间的关系),那么类似更强大的解决方案可能会像SQLite一样更好地工作。

CoreData是一个基于Objective-c的SQLite包装器。如果您认为自己可能想要更复杂的东西,那么CoreData可能就是您的选择。

如果您需要快速教程,我会查看:http://www.raywenderlich.com/934/core-data-tutorial-getting-started

这让我开始了,并让我学习了CoreData的基本知识。

祝你好运!