2011-06-21 12 views
92

Estoy trabajando en una aplicación universal de iOS y me gustaría ver el SQL sin formato en los registros cuando estoy depurando. Hay alguna información in this blog post sobre cómo habilitar el registro de SQL sin procesar para el desarrollo de datos principales de iOS. El ejemplo dado es para XCode 3 y no está claro cómo habilitar esto en XCode 4.XCode4 y Core Data: Cómo habilitar la depuración de SQL

He intentado con "Producto" -> "Editar esquema" y he añadido "-com.apple.CoreData. SQLDebug 1 "a" Argumentos Pasados ​​al Lanzar ", pero todavía no veo ningún resultado en los registros. No estoy seguro de si estoy buscando en el lugar equivocado o simplemente estoy pasando los argumentos incorrectamente.

+1

Gracias por esto. Mi problema principal es que la tabla en la que estoy buscando tiene un poco más de 74,000 filas y quería tener una idea de por cuánto tiempo se están ejecutando las consultas, ya que ahora es bastante lento. Respeto el hecho de que hay una gran cantidad de abstracción pasando, pero estaba realmente en la oscuridad sobre lo que estaba pasando bajo el capó. Esto al menos me ayuda un poco. – oalders

+0

Siempre que comprenda las limitaciones, puede examinar el SQL sin formato, especialmente para ajustar el rendimiento. Donde las personas se meten en problemas es tratando de descubrir cómo se comporta el gráfico de objetos mirando el SQL sin formato. Como no existe una relación directa entre los dos, simplemente los desvía. – TechZen

Respuesta

142

Usted debe estar buscando en el mismo lugar que presentamos lo NSLOGS

Y hay que ir a producto -> Editar Esquema -> A continuación, en el panel izquierdo seleccione Ejecutar YOURAPP.app e ir a los argumentos del Panel principal Tab.

Allí puede agregar un argumento aprobado al inicio.

se debe añadir -com.apple.CoreData.SQLDebug 1

Pulse OK y tu eres todo listo.

La clave aquí es editar el esquema que utilizará para las pruebas.

+8

Gracias por esto. Resulta que, en lo que respecta al simulador, el formato de mis argumentos era incorrecto, como veo en una de las respuestas aquí http://stackoverflow.com/questions/822906/how-do-i-get-the-coredata- debug-argument-to-output-to-the-console Necesito pasar un argumento de ** - com.apple.CoreData.SQLDebug ** y un segundo argumento de ** 1 ** para ver el resultado de SQL. – oalders

+2

alguna idea sobre cómo imprimir los argumentos que se pasan a la base de datos? este enfoque funciona bien para ver cómo se está estructurando la consulta, pero solo imprime la instrucción sql, como 'ACTUALIZAR ZTABLE SET ZCOLUMN =? WHERE ZID =? 'Y no es muy útil ver realmente de qué se envían los datos –

+0

En realidad, pensé que sería mejor agregarlo como una verdadera pregunta de SO;) http://stackoverflow.com/questions/12306343/how-to-print-core-data-debug-values ​​ –

20

XCode 4

Está en el mismo lugar administro mi NSZombieEnabled

Producto -> Esquema Editar -> Ejecutar YouApp.app depuración

En "argumentos incluidos en el lanzamiento", exactamente de pasta :

-com.apple.CoreData.SQLDebug 1

Advertencia - esto es muy detallado, si usted está teniendo problemas de datos Básicos, esto podría bien vale la pena mirarlo, pero también puede ser más información de la necesaria sobre lo equivocado.

+0

Cualquier forma de imprimir esto -com.apple.CoreData.MigrationDebug 1 en archivo de cadena, para que el usuario pueda cargar el archivo de registro – rhlnair

5

Estaba teniendo un problema con esto y luego me di cuenta de que era una omisión tonta, lo que supongo que es un error para algunos de ustedes. Cuando ingresé al argumento en Xcode (4.3.1), omití el guión principal. No lo hubiera hecho si estuviera ingresando en una línea de comando, pero en la GUI lo había omitido. No encontré ninguna diferencia entre ingresar en 2 argumentos diferentes o en uno (como algunas publicaciones sugirieron). Así que utilice: -com.apple.CoreData.SQLDebug 1 y no simplemente: com.apple.CoreData.SQLDebug 1 que trabajó para mí, tanto en simulador y dispositivo real