预加载信息的核心数据

时间:2013-05-28 21:21:10

标签: ios core-data

我目前正在了解核心数据,我可以看到它对电话簿等应用程序的好处,但如果您的应用程序要包含预加载的数据,那么核心数据就是好的。例如美式橄榄球队的球员。我正在使用MESASqlite并手动输入ino,然后将其复制并粘贴到xcode中,以便在我的应用程序中预装所有播放器。

基本上,我听说核心数据不是数据库(根据Apple文档)所以我有点困惑。

4 个答案:

答案 0 :(得分:4)

使用CoreData作为只读预加载数据存储是非常可能的。实际上,如果数据集很大,CoreData的错误机制可能对您有利,可以使运行时内存消耗保持在较低水平。使用CoreData几乎肯定比使用SQL从SQLite数据库中获取所需的记录子集更容易。 CoreData还为版本控制和模型版本更新提供了解决方案。

为此,您使用SQLite后备存储,并且需要编写工具来填充初始模型。请注意,尽管使用SQLite数据库表编辑器修改单个字段几乎是可行的,但您绝对无法使用一个创建或删除行。

就填充初始模型的工具而言,将它作为MacOSX控制台或Cocoa应用程序并将其作为应用程序构建过程的一部分运行是很有意义的。您将SQLite数据库包含在iOS应用程序中作为二进制资源。

在MacOSX中构建图形编辑工具实际上比iOS容易得多,因为cocoa框架提供了许多控件的额外KVO绑定 - 例如,在NSTableView中。

或者,您可以轻松地转换现有格式(如CSV或XML)中的数据。

答案 1 :(得分:1)

我几乎总是使用Core Data,用于预填充或空数据库。如果必须处理持久数据,可以使用.plist或数据库(主要是sqlite)文件。不同之处在于,如果使用.plist文件,则将数据加载到NSDictionary对象中。另一方面,如果您使用Core Data,则持久化信息将加载到“托管”对象中,这些对象更易于使用。使用Core Data有几个优点(管理多个上下文,数据模型编辑器,缓存等)

如果您不熟悉Core Data,请尝试一下

答案 2 :(得分:0)

核心数据可能不是真正的数据库,但它拥有SQLite数据库的许多常用功能。

是的,核心数据是一个不错的选择。您通常会使用SQLite存储来保存应用中的数据。您还可以编写一些代码或桌面应用程序,以便编辑预加载数据库。然后,您将预装入数据库复制到Xcode项目中。

如果你已经有一个使用MESASqlite的解决方案,一切正常,那么没有特别的理由可以改变。

答案 3 :(得分:0)

  

基本上,我听说核心数据不是数据库(根据Apple的说法)   文档)所以我有点困惑。

核心数据是一个对象持久性框架:您将对象放入商店,然后您可以将它们取回。所以它就像一个数据库,它可以使用数据库来实际存储,但是如果你根据表和行而不是对象图来考虑它应该考虑自己只使用SQLite。使用对象可以构建智能来将数据操作到类中,而从数据存储中提取的对象将具有这些行为。

  如果您的应用包含预加载的数据,

是核心数据。

当然 - 这样的东西很棒。实际上,编写一个从其他地方获取数据的简单Mac程序并使用您为iOS应用程序创建的相同模型将其添加到Core Data存储中并不罕见。您可以将该数据存储与模型一起构建到您的iOS应用程序中,它只会起作用。