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

Jos*_*ick 19 iphone core-data objective-c plist

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

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

Tom*_*ton 26

我头脑中的一些优势:

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

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


Sus*_*cob 5

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

CoreData 是一个围绕 SQLite 的基于 Objective-C 的包装器。如果你认为你可能想要更复杂的东西,CoreData 可能是你要走的路。

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

这让我开始学习并让我学习 CoreData 工作的基础知识。

祝你好运!

  • 虽然 Core Data 使用 SQLite(在 iPhone 上)确实如此,但这是一个实现细节,您不应该将 Core Data 视为只是一个包装器。它是一个对象持久性框架。它为您处理保存到磁盘和从磁盘恢复。 (5认同)