2012-09-06 15 views
13

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

Usando el "-com.apple.CoreData.SQLDebug 1" en mis "argumentos incluidos en el lanzamiento" opciones de depuración imprime la estructura SQL bien

(se puede comprobar ver cómo utilizar esta aquí: XCode4 and Core Data: How to enable SQL Debugging)

Pero el problema es que la impresión NSLog es algo así como 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.

Respuesta

29

abierto "Producto -> Esquema -> Editar Esquema ..." en Xcode y añadir a "argumentos pasados ​​en el lanzamiento":

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

(se necesita El segundo argumento de lanzamiento para la depuración de datos básicos iOS 10/macOS 10.12 o posterior, consulte com.apple.CoreData.SQLDebug not working para obtener más información.)

Verá todos los valores a los que están vinculadas las instrucciones 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 
+0

No está mostrando 'NSFetchRequest' por favor hágamelo saber ¿hay alguna manera de show that also –

+0

@VarunNaharia: Simplemente puede imprimir la solicitud, algo así como 'NSLog (@" request:% @ ", request)' –

+0

Estoy usando swift y comprobé 'po fetchRequest' en la consola y obtuve esto' < NSFetchRequest: 0x1704c23e0> (entity: TravelDetail; predicate: (id == 6412); sortDescriptors: ((null)); type: NSManagedObjectResultType;) ' –

2

Si está usando Xcode 8, que tendrá que también es necesario añadir argumento adicional

-com.apple.CoreData.Logging.stderr 1