1

我喜欢 Core Data,并且很享受它使简单的数据库事务变得多么容易。但我还有几个复杂的查询需要做,我担心 Core Data 不会让运行这些查询变得容易。

以下是我需要执行的查询类型的几个示例(这些在 MySQL 中,但如有必要,我稍后会针对 SQLite 调整它们):

http://d.pr/n/h0mD

http://d.pr/n/ZVVx

所以这是我的问题:

  1. Core Data 和它的 NSPredicates 会允许我做所有这些事情吗?(日期约束、if/else 条件、连接、分组依据等)
  2. 如果这不可能(或者通过合理的努力可以做到),我可以在Core Data旁边使用 FMDB 之类的东西吗?(是的,我知道我必须小心)

我期待着您的见解。谢谢!

4

2 回答 2

5

您不应该将 FMDB 与核心数据一起使用。从技术上讲,你可以。但是您的应用程序可能会在某个时候中断。Apple 不保证架构是可预测的。核心数据是一种抽象,底层的持久化存储与核心数据是断开的。他们甚至在 2013 年的 wwdc 视频中提到了这一点。您可以使用 NSPredicate、NSExpression 生成您尝试获取的查询。您还可以对内存进行一些检查(如果可能的话)。我会查看您的查询,看看我是否可以生成

于 2013-06-15T17:34:03.057 回答
1

核心数据不是数据库。这是一个对象持久化模型。如果您像标准数据库一样使用它,那么使用 FMDB 可能会更好。

看看这里

我经过惨痛的教训才学到这个。你不必。=)

于 2013-06-15T20:38:06.197 回答