AFAIK CoreData可以配置为在持久存储中使用sqlite。
因为核心数据不提供使用SQL查询的方法。
所以核心数据在后台有sqlite db。
同时使用基于Core-Data和Sqlite c的api访问同一个数据库是否安全?
是否会导致任何数据损坏是sqllite或任何线程问题。
我将使用任何包装器(如FMDB或基于C的API)的原因是使用sql查询查询复杂数据
答案 0 :(得分:4)
这可能是安全的,但它仍然是一个非常糟糕的主意。 Core Data定义了自己的模式,该模式未记录,与您在设计SQL模式时使用的模式不同。因此,您必须创建Core Data模型,然后对您自己的架构进行反向工程以进行直接SQL调用。
当然,在完全不同的调用样式中保持同步更改将是一个绝对的痛苦。
这是一个坏主意,即使它不会破坏您的数据。你会后悔使用这种方法。
答案 1 :(得分:1)
在过去,在并发和子查询表达式存在之前,我已经完成了这项工作。在使用sql之前,我必须让Core Data将所有内容保存到磁盘。它当时工作但你永远不知道它是否适用于未来的OS X.现在我不会这样做。如果您需要复杂的查询,请仅使用Sqlite或使用核心数据,并对谓词和获取请求具有创造性。