选择 fmdb 而不是核心数据的后果

Posted

技术标签:

【中文标题】选择 fmdb 而不是核心数据的后果【英文标题】:Ramifications of choosing fmdb over core data 【发布时间】:2013-05-16 18:23:44 【问题描述】:

我只是在学习可可(桌面)开发,是的,我一遍又一遍地阅读核心数据,95-99% 的时间都是你需要的。

但是,至少在理论上,有人可以向我解释在核心数据上使用 fmdb 之类的东西的后果,特别是在涉及将使用 uitableview 显示其数据的 GUI 应用程序时。

假设该应用程序用于库存系统,用于存储产品。

【问题讨论】:

Core Data vs SQLite 3 的可能重复项此问题已被多次询问和回答。 FMDB 只是 SQLite 的包装器 不,我认为我的问题不一样,我问的是我将如何自己处理撤消/重做,我可以或不能使用某些绑定技术,处理有效加载核心数据可能内置的项目等。 【参考方案1】:

答案很简单,如果你有大量的数据处理工作要做,那就选择 Core Data。

如果您想手动编写 SQL 查询来存储和检索数据,请使用带有 FMDB 包装器的 SQL。

FMDB 在您需要处理的数据较少并且您更喜欢编写自己的数据获取代码时非常适合。

让我们以您的产品库存系统为例。在 Core Data 中,您将创建一个名为“Product”的实体。 Core Data 将负责处理特定实体的所有数据保存和获取。每当您向“产品”添加新属性时,Core Data 都会为您处理。

现在,如果您要使用 FMDB,那么您将不得不编写代码来保存和从数据库中检索。而且,每当您要更改数据库结构时,您都必须手动添加/删除架构更改的代码。

这里有几个不错的 Core Data 链接:

http://www.raywenderlich.com/934/core-data-on-ios-5-tutorial-getting-started

http://nachbaur.com/blog/smarter-core-data

祝你好运

【讨论】:

我认为如果你对核心数据进行架构更改,它会变得混乱,因为你必须重新导入数据等? 有迁移。它们有两种口味,一种是轻量级的,一种是普通的。 developer.apple.com/library/ios/#documentation/cocoa/Conceptual/… 很多变化都属于轻量级迁移,意味着核心数据将能够弄清楚如何调整底层数据库。如果发生重大更改,是的,您确实必须编写迁移代码,但您也需要在普通 SQL 中编写。更糟糕的情况是,如果数据没有那么有价值,您可以删除底层存储。

以上是关于选择 fmdb 而不是核心数据的后果的主要内容,如果未能解决你的问题,请参考以下文章

分布式数据库的取舍——Cassandra的选择及其后果

如何在通用 iOS 设备而不是模拟器上使用 FMDB?

Fmdb 选择带有变量表名的查询

如果日期列介于开始日期和结束日期之间,则选择行 FMDB 请求

大数据处理为何选择Spark,而不是Hadoop

如何用核心数据填充选择器控制器