在同一个数据库上同时使用基于core-data和sqlite c的api

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

所以核心数据不提供使用SQL查询的方式。

所以core-data在后台有sqlite db。

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

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

为什么我要使用任何包装如FMDB或基于C的API是使用SQL查询来查询复杂的数据

请澄清我。

这可能是安全的,但它仍然是一个非常糟糕的主意。 核心数据定义了自己的模式,这是没有logging的,而且与deviseSQL模式时使用的不同。 所以你必须创build核心数据模型,然后反向工程自己的模式来直接进行SQL调用。

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

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

过去我已经完成了这个工作,在并发和子查询expression式之前。 在使用sql之前,我必须使Core Data将所有内容保存到磁盘。 它的工作,但你永远不知道它是否会在未来的OS X中工作。现在我不会这样做。 如果您需要复杂的查询,请仅使用Sqlite或使用核心数据,并使用谓词和提取请求进行创意。