如何打印核心数据debugging值?
如何在使用核心数据SQLdebugging时打印发送到sqlite数据库的值?
在我的“ 启动时传递的参数 ”debugging选项中使用“ -com.apple.CoreData.SQLDebug 1 ”打印SQL结构就好了
(你可以查看如何使用这里: XCode4和核心数据:如何启用SQLdebugging )
但问题是,打印的NSLog是像UPDATE ZTABLE SET ZCOLUMN = ? WHERE ZID = ?
UPDATE ZTABLE SET ZCOLUMN = ? WHERE ZID = ?
如果试图查看发送到数据库的完整SQL语句和/或数据,它根本没有任何帮助。
在Xcode中打开“Product – > Scheme – > Edit Scheme …”并添加到“启动时通过的参数”中:
-com.apple.CoreData.SQLDebug 3 -com.apple.CoreData.Logging.stderr 1
(iOS 10 / macOS 10.12或更高版本上的Core Datadebugging需要第二个启动参数,请参阅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
如果你使用的是Xcode 8,你还需要添加额外的参数
-com.apple.CoreData.Logging.stderr 1