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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在同一个db上同时使用基于核心数据和sqlite c的api相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

我将使用任何包装器(如FMDB或基于C的API)的原因是使用sql查询查询复杂数据

答案

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

当然,在完全不同的调用样式中保持同步变化将是一个绝对痛苦的屁股。

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

另一答案

在存在并发和子查询表达式之前,我已经完成了这个。在使用sql之前,我必须让Core Data将所有内容保存到磁盘。它当时工作但你永远不知道它是否适用于未来的OS X.现在我不会这样做。如果您需要复杂的查询,请仅使用Sqlite或使用核心数据,并对谓词和获取请求具有创造性。

以上是关于在同一个db上同时使用基于核心数据和sqlite c的api的主要内容,如果未能解决你的问题,请参考以下文章

Coredata 性能——为只读数据集提供预填充的核心数据 sqlite db

可以将 Core Data 与不同的预填充 sqlite db 一起使用吗?

如何将sqlite db转换为ios中的核心数据

sqlite 文件在 Mac 上存储在哪里?

从 Sqlite 迁移到 CoreData

iCloud 中基于 SQLite 的核心数据中的有序关系