web-dev-qa-db-de.com

XCode4 und Core Data: So aktivieren Sie das SQL-Debugging

Ich arbeite an einer universellen iOS-App und würde beim Debuggen gerne die unformatierten SQL-Einträge in den Protokollen sehen. Es gibt einige Informationen in diesem Blog-Beitrag , wie Sie die unformatierte SQL-Protokollierung für die iOS Core Data-Entwicklung aktivieren. Das gegebene Beispiel ist für XCode 3 und es ist mir einfach nicht klar, wie ich dies in XCode 4 aktivieren kann.

Ich habe "Product" -> "Edit Scheme" ausprobiert und "-com.Apple.CoreData.SQLDebug 1" zu "Arguments Passed on Launch" hinzugefügt, aber ich sehe immer noch keine Ausgabe in den Protokollen . Ich bin mir nicht sicher, ob ich an der falschen Stelle schaue oder die Argumente nur falsch weitergebe.

98
oalders

Sie sollten auf den gleichen Ort schauen, an dem Sie NSLOGS erhalten

Und Sie sollten zu Produkt -> Bearbeitungsschema -> gehen. Wählen Sie dann im linken Feld Run YOURAPP.app aus und gehen Sie auf die Registerkarte Argumente des Hauptfensters.

Dort können Sie ein Argument hinzufügen, das beim Start übergeben wird.

Sie sollten -com.Apple.CoreData.SQLDebug 1 hinzufügen

Drücken Sie OK und Sie sind fertig.

Der Schlüssel hier ist, das Schema zu bearbeiten, das Sie zum Testen verwenden werden.

146
Nicolas S

XCode 4

Es ist an der gleichen Stelle, an der ich meine NSZombieEnabled verwalte 

Produkt -> Bearbeitungsschema -> Führen Sie YouApp.app Debug aus 

Fügen Sie unter "Argumente, die beim Start übergeben werden" genau ein:

-com.Apple.CoreData.SQLDebug 1

Achtung - Dieses Zeug ist sehr wortreich. Wenn Sie Kerndatenprobleme haben, kann dies einen Blick wert sein, aber es kann auch mehr Informationen über das Falsche sein, als Sie benötigen. 

20
OverToasty

Ich hatte ein Problem damit und dann wurde mir klar, dass es eine dumme Unterlassung war, was für einige von Ihnen ein Fehler in der Kürze ist. Als ich das Argument in Xcode (4.3.1) eingegeben habe, habe ich den führenden Bindestrich weggelassen. Ich hätte es nicht getan, wenn ich es über eine Befehlszeile eingegeben hätte, aber in der GUI hatte ich es weggelassen. Ich habe keinen Unterschied zwischen der Eingabe von 2 verschiedenen Args gefunden (wie von einigen Posts vorgeschlagen). Verwenden Sie also:

-com.Apple.CoreData.SQLDebug 1

und nicht einfach:

com.Apple.CoreData.SQLDebug 1

das hat für mich sowohl im simulator als auch im realen Gerät funktioniert

5
user730458

Beachten Sie, dass Sie verschiedene Werte des übergebenen Werts eingeben können. Die bieten mehr und mehr Ausführlichkeit.

-com.Apple.CoreData.SQLDebug 1
-com.Apple.CoreData.SQLDebug 2
-com.Apple.CoreData.SQLDebug 3
-com.Apple.CoreData.SQLDebug 4 // This will actually show parameter binds ("?")
0
netigger