搜索核心数据与 Plist

Posted

技术标签:

【中文标题】搜索核心数据与 Plist【英文标题】:Searching Core Data vs. Plist 【发布时间】:2011-06-17 18:02:52 【问题描述】:

我正在搜索 350 个字典对象。将数据存储在 Core Data 或 plist 中进行搜索是否更有效?

基本上,每个对象都是一个包含 8 个键值的字典。 350 个对象在线存储在 JSON 提要中。我想在应用程序首次启动时下载提要,然后将数据存储到核心数据或 plist 中。在应用程序中,有一个默认包含多个对象的表格。然后用户能够添加/删除这些项目。当用户点击添加时,我想向用户显示所有 350 个对象,并提供搜索机制。

在这种情况下,我应该将 JSON 提要存储到 Plist 中还是使用 Core Data?

【问题讨论】:

【参考方案1】:

这取决于。如果您没有遇到实际的性能问题,请选择更易读且更适合您的应用程序的方法。例如,如果您正在保存用户可以添加某种记录的数据,核心数据会处理常见的情况,并且可以与获取的数据控制器一起使用来非常顺利地管理表。它还可以轻松绑定到您的对象模型,因此您不必进行键查找。

如果您在静态键列表中拥有合理数量的静态数据或可编辑值,并且您总是需要加载所有这些数据,请继续加载 plist 以方便使用。发布有关您的具体情况的更多信息,我可以更新我的答案。

更新:

我认为您可能出于几个原因想要使用 Core Data。首先,如果这些对象中的每一个都具有相同的 8 个键,那么您将希望用绑定对象而不是字典来表示每个对象。其次,核心数据是用来搜索、排序和过滤的。第三,使用NSFetchedResultsController 将其绑定到表(具有正确索引)或滚动选择器并不难。如果您将 NSManagedObject 的属性命名为与您的 8 个键相同,那么使用 KVC 也可以很容易地从 JSON 加载。

您可以使用 plist,但需要做更多的工作。

【讨论】:

感谢您的回复。我在上面编辑了我的问题。您会相应地编辑您的答案吗?谢谢。 哦,哇真的 - 我完全忘记了滚动选择器!我会实施的。太好了.. 非常感谢彼得! +1 我同意这里的大部分内容。但是,由于该问题与 ios 相关,因此需要指出绑定在 iOS 中不可用。 谢谢。我的意思不是就绑定框架而言的“绑定”,而是指对象到关系绑定和将列绑定到托管对象属性的更一般含义,就像 Core Data 执行的那样。【参考方案2】:

就像生活中的许多事情一样,这取决于。我会说 plist 可能会很好,只要数据不是太大而无法保存在内存中。另外,如果数据是静态的,我会倾向于 plist。如果您有大量数据或大量相关数据对象并且这些数据会随着时间而变化,CoreData 会更好。

根据您的编辑。我同意核心数据是要走的路。每当您频繁添加/更新/删除/排序/搜索/过滤数据时,我更喜欢 Core Data,这也是 Apple 推荐的方法。

【讨论】:

以上是关于搜索核心数据与 Plist的主要内容,如果未能解决你的问题,请参考以下文章

请帮助理解保存数据。核心数据与 plist

核心数据 - 将实体保存为 pList / 字典

应用更新后将 plist 加载到核心数据中

将 plist 加载到核心数据中

使用 plist 将数据插入核心数据时卡住

核心数据、字典还是 plist?