我目前正在学习核心数据,我可以看到它对电话簿等应用程序的好处,但是如果您的应用程序要包含预加载的数据,那么核心数据是好的。例如美式橄榄球队的球员。我正在使用 MESASqlite 并手动输入 ino,然后将其复制并粘贴到 xcode 中,以将所有播放器预加载到我的应用程序中。
基本上,我听说核心数据不是数据库(根据 Apple 文档),所以我有点困惑。
使用 CoreData 作为只读的预加载数据存储是非常有可能的。事实上,如果数据集很大,CoreData 的故障机制可能对您保持低运行时内存消耗很有利。使用 CoreData 几乎肯定比使用 SQL 从 SQLite 数据库中获取所需的记录子集更容易。CoreData 还提供了版本控制和模型版本更新的解决方案。
为此,您需要使用 SQLite 后备存储,并且需要编写一个工具来填充初始模型。请注意,虽然使用 SQLite 数据库表编辑器来修改单个字段几乎是可行的,但您绝对不能使用一个来创建或删除行。
就填充初始模型的工具而言,将其作为 MacOSX 控制台或 Cocoa 应用程序并将其作为应用程序构建过程的一部分运行是很有意义的。您将 SQLite 数据库作为二进制资源包含在 iOS 应用程序中。
在 MacOSX 中构建图形编辑工具实际上比在 iOS 中容易得多,因为 cocoa 框架提供的许多控件上都有额外的 KVO 绑定 - 例如,在NSTableView
.
或者,您可以轻松地从现有格式(例如 CSV 或 XML)转换数据。
对于预填充或空数据库,我几乎总是使用 Core Data。如果您必须处理持久数据,您可以使用 .plist 或数据库(主要是 sqlite)文件。不同之处在于,如果您使用 .plist 文件,则将数据加载到 NSDictionary 对象中。另一方面,如果你使用 Core Data,持久化的信息会被加载到“托管”对象中,这样更容易使用。使用 Core Data 有几个优势(管理多个上下文、数据模型编辑器、缓存等)
如果您不熟悉 Core Data,您应该尝试一下
Core Data 可能不是真正的数据库,但它拥有 SQLite 数据库的许多共同特性。
是的,Core Data 是一个不错的选择。您通常会使用 SQLite 存储来保存应用程序中的数据。您还可以编写一些代码或桌面应用程序来编辑预加载数据库。然后将预加载数据库复制到 Xcode 项目中。
如果您已经有了使用 MESAsqlite 的解决方案并且一切正常,那么就没有特别的理由需要改变。
基本上,我听说核心数据不是数据库(根据 Apple 文档),所以我有点困惑。
Core Data 是一个对象持久化框架:您将对象放入存储中,稍后您可以将它们取回。所以它就像一个数据库,它可以使用数据库进行实际存储,但如果你是根据表和行而不是对象图来考虑它,你可能应该考虑自己使用 SQLite。使用对象可以让您构建将数据处理到类中的智能,并且您从数据存储中提取的对象将具有这些行为。
如果您的应用程序要包含预加载的数据,那么核心数据是好的。
当然 - 它非常适合这样的东西。事实上,编写一个简单的 Mac 程序从其他地方获取数据并使用您为 iOS 应用程序创建的相同模型将其添加到 Core Data 存储区的情况并不少见。您可以将该数据存储与模型一起构建到您的 iOS 应用程序中,它就会正常工作。