如何打印Core Data调试值?

Fel*_*ino 17 sqlite debugging core-data ios

如何在使用Core Data SQL Debug时打印发送到sqlite数据库的值?

在我的" 启动时传递的参数 "调试选项中使用" -com.apple.CoreData.SQLDebug 1 " 打印SQL结构就好了

(你可以在这里查看如何使用它:XCode4和核心数据:如何启用SQL调试)

但问题是,UPDATE ZTABLE SET ZCOLUMN = ? WHERE ZID = ?如果您正在尝试查看发送到数据库的完整SQL语句和/或数据,那么打印的NSLog就像是一样,它根本没用.

Mar*_*n R 33

在Xcode中打开"Product - > Scheme - > Edit Scheme ..."并添加到"在启动时传递的参数":

-com.apple.CoreData.SQLDebug 3
-com.apple.CoreData.Logging.stderr 1 
Run Code Online (Sandbox Code Playgroud)

(iOS 10/macOS 10.12或更高版本上的Core Data调试需要第二个启动参数,请参阅com.apple.CoreData.SQLDebug无法获取更多信息.)

您将看到SQL语句绑定的所有值.示例输出:

test56[1588:c07] CoreData: sql: BEGIN EXCLUSIVE
test56[1588:c07] CoreData: sql: INSERT INTO ZEVENT(Z_PK, Z_ENT, Z_OPT, ZTIMESTAMP) VALUES(?, ?, ?, ?)
test56[1588:c07] CoreData: details: SQLite bind[0] = (int64)13
test56[1588:c07] CoreData: details: SQLite bind[1] = (int64)1
test56[1588:c07] CoreData: details: SQLite bind[2] = (int64)1
test56[1588:c07] CoreData: details: SQLite bind[3] = "368650709.435904"
test56[1588:c07] CoreData: sql: COMMIT
Run Code Online (Sandbox Code Playgroud)