¿Cómo imprimir los valores de debugging de Core Data?

¿Cómo puedo imprimir los valores que se envían a la database sqlite mientras utilizo Core Data SQL Debug?

El uso de " -com.apple.CoreData.SQLDebug 1 " en mis opciones de debugging " Argumentos aprobados al iniciar " imprime la estructura SQL bien

(puede consultar cómo usar esto aquí: XCode4 y Core Data: cómo habilitar la debugging de SQL )

Pero el problema es que el NSLog impreso es algo así como UPDATE ZTABLE SET ZCOLUMN = ? WHERE ZID = ? UPDATE ZTABLE SET ZCOLUMN = ? WHERE ZID = ? y no ayuda en absoluto si está tratando de ver cuál es la statement SQL completa y / o los datos que se envían a la database.

Abra "Producto -> Esquema -> Editar esquema …" en Xcode y añádalo a "Argumentos aprobados al iniciar":

 -com.apple.CoreData.SQLDebug 3 -com.apple.CoreData.Logging.stderr 1 

(El segundo argumento de lanzamiento es necesario para la debugging de Core Data en iOS 10 / macOS 10.12 o posterior, ver com.apple.CoreData.SQLDebug no funciona para get más información).

Verá todos los valores a los que están vinculadas las sentencias SQL. Salida de ejemplo:

 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 

Si está utilizando Xcode 8, necesitará también agregar argumento adicional

 -com.apple.CoreData.Logging.stderr 1