iphone - 为什么核心数据预填充如此困难?

标签 iphone core-data relational-database

这更像是一个关于苹果设计决策的哲学问题,而不是一个关于核心数据的问题。

为什么拥有一个如此难以预填充的模型系统是有用的?有什么优点?我知道你可以让你的程序生成 sqlite 文件并手动编辑它,但据我所知,如果你有任何关系,你就不能这样做。

我将其与 Rails 中使用的 MVC 范例进行比较,这似乎更有意义。 Rails 中的模型提供了与 Core Data 类似的抽象级别(据我所知),但它们还允许您手动(或通过脚本)将您想要的任何内容输入到数据库中。

我对 Core Data 的问题是:既然 Rails 似乎(对我来说)证明你可以从数据库中获得出色的模型抽象,同时保留几种方便的方法来预填充它,那么删除该功能会带来什么可能的优势?核心数据是否更高效?预填充所涉及的困难是否仅仅是其他设计选择的副作用?如果是这样,为什么没有考虑预填充?

(免责声明,我真的对这些选择背后的原因感兴趣,尽管我的帖子可能暗示了这一点,但我并不是真的在寻找“Rails 中的模型与核心数据”的辩论。)

最佳答案

因为核心数据不是数据库。它是一个恰好持久化到磁盘的对象图,其中一种持久化格式是数据库。这意味着你需要以反向视角来看待它。

Core Data 的设计目的是尽可能快地从持久存储中检索对象并将其保存回来。这样做的一个副作用是,持久格式专注于使该目标更快,而与其他任何东西兼容充其量是次要的。因此SQLite文件的内部结构是为了性能,而不是兼容性。

我对预填充的看法是,核心数据被设计为一个闭环系统。您可以使用 Core Data 轻松填充数据文件。填充 Core Data SQLite 文件并不比编写脚本将 Oracle 数据转换为 CSV 格式更难。

如果您留在 Cocoa 和 Core Data 中,那么这根本不困难。您编写命令行应用程序或编辑应用程序并导入数据。从 Cocoa 程序员的视角来看,这是一个微不足道的任务,只需要几分钟。

关于iphone - 为什么核心数据预填充如此困难?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3388727/

相关文章:

iphone - UIAlertView 单击时崩溃 - 使用 ARC

iPhone:从 NSURL 加载图像时出现问题

iphone - 将App Store嵌入我的应用程序

core-data - 实体 User 不符合键 "dateEndSubscription"的键值编码

php - 带播放列表的视频数据库的数据库设计

iphone - iOS 视频 : More than 4 simultaneous AVAssetReaders possible?

ios - 当托管对象模型更新时,其关系模型未更新

ios - SQLCipher 和 CoreData 问题 : CoreData could not fulfill a fault for

mysql - MySQL 中的关系型数据库

ruby-on-rails - rails 5 : Database design with iterations