2011-06-17 94 views
4

我在搜索350个字典对象。将数据存储在Core Data或plist中进行搜索会更高效吗?搜索核心数据与Plist

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

在这种情况下,我应该将JSON订阅源存储到Plist中还是使用核心数据?

回答

5

这取决于。如果您没有遇到实际的性能问题,请对您的应用程序进行更易读和适合的操作。例如,如果要保存用户可以添加某种记录的数据,核心数据将处理常见情况,并且可以与读取的数据控制器一起使用,以非常顺利地管理表。它也可以很容易地绑定到你的对象模型,所以你不必做键查找。

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

UPDATE:

我想你也许会想使用核心数据有以下几个原因。首先,如果这些对象中的每一个具有相同的8个键,则您将希望用绑定对象而不是字典来表示每个对象。其次,核心数据旨在被搜索,排序和过滤。第三,使用NSFetchedResultsController将它绑定到表(带有正确索引)或滚动选择器上并不困难。如果您将您的NSManagedObject的属性命名为与8键相同的名称,那么使用KVC加载JSON也会非常容易。

你可以使用plist,但必须做更多的腿部工作。

+0

感谢您的回复。我上面编辑了我的问题。你会相应地编辑你的答案吗?谢谢。 – darksky

+0

哇哇 - 我完全忘记了滚轮选择器!我会实现这一点。非常感谢彼得! – darksky

+0

+1我同意这里的大部分内容。然而,由于这个问题涉及到iOS,所以必须指出绑定在iOS中不可用。 – Caleb

3

与生活中的许多事情一样,这取决于。只要数据不会太大以至于不能记忆,我会说plist可能会很好。另外,如果数据是静态的,我会倾向于plist。如果您有大量数据或大量相关数据对象以及数据随时间变化,CoreData会更好。

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