com.apple.CoreData.SQLDebug 标志未显示 SQL

Posted

技术标签:

【中文标题】com.apple.CoreData.SQLDebug 标志未显示 SQL【英文标题】:com.apple.CoreData.SQLDebug flag is not displaying SQL 【发布时间】:2015-10-19 22:47:56 【问题描述】:

我在 OSX 11.11 上使用带有 swift 的 Xcode 7 - 我查看了一些关于使用调试构建标志调试核心数据的 SQL 语句的教程。我找到了this,它没有给我任何其他信息。

标志是 com.apple.CoreData.SQLDebug,这就是我尝试在“编辑方案”菜单中的“启动时传递的参数”中输入它的方式:

-com.apple.CoreData.SQLDebug 1 我尝试了 1 和 3,我还遇到了一个旧博客,其中 - 被切换为 ~ 我也尝试过,但调试时仍然没有打印 SQL控制台。

我已确认我的 CocoaAppCD.storedata 文件中有项目 - 为什么它没有显示 sql 语句?

【问题讨论】:

您是否检查过调试标志已启用(左侧的复选框已激活)?你在使用 NSSQLiteStoreType 吗?你在保存你的 NSManagedObjectContexts 吗?您是否将 SQLDebug 参数添加到运行配置或其他配置? 1.它已启用。我不知道我是否使用 SQLiteStoreType,它是默认值 - 它保存到的文件是 .storedata,所以可能不是。我从一个博客中读到(可能是错误的)它使用 SQL 作为后端。 3.调试配置。 :-) 【参考方案1】:

根据this answer,只有在使用 NSXMLStoreType 时才会生成 .storedata 文件。 NSXMLStoreType 似乎也是默认值。如果您使用的是 NSXMLStoreType,则 SQLDebug 标志无效,因为这仅适用于 NSSQLiteStoreType。 您可以通过将这种类型的持久存储而不是 XML 存储添加到您的 NSPersistentStoreCoordinator 来使用 NSSQLiteStoreType(如果您的 CoreData 代码是由 Xcode 生成的,这将在您的 AppDelegate 中):

do 
    try coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil)
 catch  ...

【讨论】:

以上是关于com.apple.CoreData.SQLDebug 标志未显示 SQL的主要内容,如果未能解决你的问题,请参考以下文章