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

时间:2015-10-05 18:56:49

标签: ios multithreading sqlite core-data fmdb

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

因为核心数据不提供使用SQL查询的方法。

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

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