iOS 上 Core Data 结合 FMDB
Posted
技术标签:
【中文标题】iOS 上 Core Data 结合 FMDB【英文标题】:Core Data Combined with FMDB on iOS 【发布时间】:2013-06-15 17:24:48 【问题描述】:我喜欢 Core Data,并且喜欢它使简单的数据库事务变得如此简单。但我也有几个复杂的查询需要做,我担心 Core Data 不会让这些查询的运行变得容易。
以下是我需要执行的查询类型的几个示例(这些在 mysql 中,但如有必要,我稍后会针对 SQLite 进行调整):
http://d.pr/n/h0mD
http://d.pr/n/ZVVx
所以这是我的问题:
-
Core Data 及其 NSPredicates 是否允许我做所有这些事情? (日期约束、if/else 条件、连接、分组依据等)
如果这不可能(或通过合理的努力就可以做到),我可以使用 FMDB 之类的东西与 Core Data 一起使用吗? (是的,我知道我必须小心)
期待您的见解。谢谢!
【问题讨论】:
【参考方案1】:您不应将 FMDB 与 Core 数据一起使用。从技术上讲,你可以。但是您的应用程序可能会在某个时候中断。 Apple 不保证架构是可预测的。核心数据是一种抽象,底层的持久化存储与核心数据是断开的。他们甚至在 2013 年的 wwdc 视频中提到了这一点。您可以使用 NSPredicate、NSExpression 生成您尝试获取的查询。您还可以对内存进行一些检查(如果可能的话)。我会看看你的查询,看看我是否可以生成
【讨论】:
如果您能让我开始使用 NSPredicate 和 NSExpression 处理这些查询,我将不胜感激。然后我可以看到它们是如何工作的。谢谢! 抱歉,有点忙。我现在就在上面。【参考方案2】:核心数据不是数据库。这是一个对象持久化模型。如果您像标准数据库一样使用它,那么使用 FMDB 可能会更好。
Have a look here.
我很难学到这一点。你不必。 =)
【讨论】:
以上是关于iOS 上 Core Data 结合 FMDB的主要内容,如果未能解决你的问题,请参考以下文章
Swift之深入解析如何结合Core Data和SwiftUI
带有 Core Data 陡峭学习曲线的 RestKit 0.10.1
iOS开发之SQLite-C语言接口规范——Ready And Open Your SQLite