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

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

带有 Core Data 陡峭学习曲线的 RestKit 0.10.1

iOS开发之SQLite-C语言接口规范——Ready And Open Your SQLite

如何在 .Net Core 6.0 中结合 CosmosDB、Entity Framework 和 OData?

iOS sqlite/FMDB 更新不起作用