在同一数据库上同时使用基于 api 的核心数据和 sqlite c

Use core-data and sqlite c based api simultaneously on same db

AFAIK CoreData 可以配置为在持久存储中使用 sqlite。

因此核心数据不提供使用 SQL 进行查询的方式。

所以核心数据在后台有 sqlite 数据库。

同时使用基于 Core-Data 和基于 Sqlite c 的 api 访问同一个数据库是否安全?

它是否会导致任何数据损坏 sqllite 或任何线程问题。

我要使用任何包装器(例如 FMDB 或基于 C 的 API 的原因是使用 sql query

查询复杂数据

这可能是安全的,但它仍然是一个非常糟糕的主意。 Core Data 定义了它自己的模式,该模式未记录并且与您设计 SQL 模式时使用的模式不同。因此,您必须创建核心数据模型,然后对您自己的模式进行逆向工程以进行直接 SQL 调用。

此外,当然,要在完全不同的调用方式之间保持同步变化绝对是一件很痛苦的事情。

这是个坏主意,即使它不会损坏您的数据。使用这种方法你会后悔的。

在并发和子查询表达式出现之前,我曾经这样做过。在使用 sql 之前,我必须让 Core Data 将所有内容保存到磁盘。它当时有效,但你永远不知道它是否会在未来 OS X 中起作用。现在我不会这样做了。如果您需要复杂的查询,请仅使用 Sqlite 或使用 Core Data,并在谓词和获取请求方面发挥创意。