【问题标题】:What are some advantages of using Core Data? (as opposed to plist)使用 Core Data 有哪些优势? (相对于 plist)
【发布时间】:2011-09-16 15:55:05
【问题描述】:

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

更新:对于任何想知道的人,我完成了这个应用程序,学习如何使用 Core Data 是完全值得的,而且它比我最初想象的要简单得多。用 plist 做这件事简直就是地狱。他们这样做的方式起初似乎有点神秘,但如果你刚开始使用它,你就会明白的。这种关系真的很棒。

【问题讨论】:

标签: iphone objective-c core-data plist


【解决方案1】:

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

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

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

这让我开始前进,让我了解 CoreData 的基本工作原理。

祝你好运!

【讨论】:

  • 虽然 Core Data 确实使用 SQLite(在 iPhone 上),但这是一个实现细节,您不应该将 Core Data 视为只是一个包装器。它是一个对象持久化框架。它为您处理保存到磁盘和从磁盘恢复。
【解决方案2】:

我想到了几个优点:

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

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

【讨论】:

  • +1。喜欢你解释每个问题的方式。 #FanOfTom。
猜你喜欢
  • 2014-10-25
  • 1970-01-01
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
  • 2013-09-22
  • 2012-05-17
相关资源
最近更新 更多