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