如何打印核心数据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