web-dev-qa-db-fra.com

XCode4 et Core Data: Comment activer le débogage SQL

Je travaille sur une application iOS universelle et j'aimerais voir le SQL brut dans les journaux lorsque je débogue. Il y a quelques informations dans ce billet de blog sur la manière d'activer la journalisation SQL brute pour le développement iOS Core Data. L'exemple donné concerne XCode 3 et je ne vois pas comment l'activer dans XCode 4.

J'ai essayé "Product" -> "Edit Scheme" et ajouté "-com.Apple.CoreData.SQLDebug 1" à "Arguments passés au lancement", mais je ne vois toujours aucun résultat dans les journaux. . Je ne sais pas si je cherche au mauvais endroit ou si je ne fais que passer les arguments de manière incorrecte.

98
oalders

Vous devriez regarder au même endroit que vous obtenez NSLOGS

Et vous devriez aller dans Product -> Edit Scheme -> Ensuite, dans le panneau de gauche, sélectionnez Exécuter YOURAPP.app et accédez à l'onglet Arguments du panneau principal.

Là, vous pouvez ajouter un argument passé au lancement.

Vous devriez ajouter -com.Apple.CoreData.SQLDebug 1

Appuyez sur OK et vous êtes tous ensemble.

La clé ici est d’éditer le schéma que vous utiliserez pour les tests.

146
Nicolas S

XCode 4

C'est au même endroit que je gère mon NSZombieEnabled 

Produit -> Éditer le schéma -> Exécuter le débogage de YouApp.app 

Sous "Arguments transmis au lancement", collez exactement:

-com.Apple.CoreData.SQLDebug 1

Attention, ce contenu est très prolixe. Si vous rencontrez des problèmes liés à Core Data, cela vaut peut-être la peine d’y jeter un coup d’œil, mais c’est peut-être aussi plus d’information que vous n’auriez besoin sur la mauvaise chose. 

20
OverToasty

J'avais un problème avec cela et ensuite j'ai réalisé que c'était une omission stupide, ce qui, je suppose, est une erreur de venue pour certains d'entre vous. Lorsque j'ai entré l'argument dans Xcode (4.3.1), j'ai omis le trait d'union. Je ne l'aurais pas fait si je l'avais entré sur une ligne de commande, mais je l'avais omis dans l'interface graphique. Je n'ai trouvé aucune différence entre deux arguments distincts ou un argument unique (comme l'avaient suggéré certains messages). Alors utilisez:

-com.Apple.CoreData.SQLDebug 1

et pas simplement:

com.Apple.CoreData.SQLDebug 1

cela a fonctionné pour moi dans le simulateur et le dispositif réel

5
user730458

Notez que vous pouvez définir différents niveaux de la valeur transmise. Qui fournissent de plus en plus de verbosité.

-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