ios sqlite debugging core-data

ios - ¿Cómo imprimir los valores de depuración de Core Data?



sqlite debugging (2)

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 inicio es necesario para la depuración de datos principales en iOS 10 / macOS 10.12 o posterior, consulte com.apple.CoreData.SQLDebug no funciona para obtener más información).

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

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

¿Cómo puedo imprimir los valores que se envían a la base de datos sqlite mientras uso Core Data SQL Debug?

El uso de " -com.apple.CoreData.SQLDebug 1 " en mis opciones de depuración " Arguments Passed on Launch " imprime la estructura de SQL muy bien

(puede consultar cómo usar esto aquí: XCode4 y Core Data: Cómo habilitar la depuración 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 declaración SQL completa y / o los datos que se envían a la base de datos.


Si está utilizando Xcode 8, necesitará también agregar argumentos adicionales

-com.apple.CoreData.Logging.stderr 1