Comment pretty-print un NSError objet dans Xcode console?
J'ai imprimé un NSError objet dans la console de Xcode (via NSLog(@"%@", error);
) et pour un certain type d'erreur, c'est ce que j'obtiens:
Domain=NSCocoaErrorDomain Code=133020 "The operation couldn’t be completed. (Cocoa error 133020.)" UserInfo=0xe939170 {conflictList=(
"NSMergeConflict (0xe93cad0) for NSManagedObject (0x5dba970) with objectID '0x5dc26f0 <x-coredata://775D53AE-58A4-4B18-BA52-D46781A183AE/SomeObject/p1>' with oldVersion = 2 and newVersion = 3 and old object snapshot = {\n creationDate = \"2011-08-24 06:52:22 +0000\";\n prop1 = \"a65e349a-b315-488e-b7f8-e459e353fd6e\";\n username = \"test-user\";\n password = \"foobar\";\n} and new cached row = {\n creationDate = \"2011-08-24 06:52:22 +0000\";\n prop1 = \"a65e349a-b315-488e-b7f8-e459e353fd6e\";\n username = \"test-user\";\n password = \"foobar\";\n}"
Lorsque je remplace tous les '\n avec retour à la ligne et tous les \"s" dans emacs, je reçois beaucoup de bien formaté message d'erreur:
Domain=NSCocoaErrorDomain Code=133020 "The operation couldn’t be completed. (Cocoa error 133020.)" UserInfo=0xe939170 {conflictList=(
"NSMergeConflict (0xe93cad0) for NSManagedObject (0x5dba970) with objectID '0x5dc26f0 <x-coredata://775D53AE-58A4-4B18-BA52-D46781A183AE/SomeObject/p1>' with oldVersion = 2 and newVersion = 3 and old object snapshot = {
creationDate = "2011-08-24 06:52:22 +0000";
prop1 = "a65e349a-b315-488e-b7f8-e459e353fd6e";
username = "test-user";
password = "foobar";
} and new cached row = {
creationDate = "2011-08-24 06:52:22 +0000";
prop1 = "a65e349a-b315-488e-b7f8-e459e353fd6e";
username = "test-user";
password = "foobar";
}"
Je préférerais de beaucoup voir ce bien formaté message d'erreur dans Xcode lui-même plutôt que de copier-coller et de recherche et remplacer des caractères dans un autre éditeur. Est-il un moyen de faire cela?
MODIFIER Pour plus de clarté, l'erreur est généré par une base de données à l'opération d'enregistrement:
NSError *error
if (![context save:&error]) {
NSLog(@"%@", error);
}
La partie incriminée de l'objet d'erreur dans ce cas (d'où les \n et \ \ "s sont en cours d'impression) est la valeur de la conflictList
clé dans l'erreur de userInfo
dictionnaire.
NSLog(@"%@", [error userInfo]);
ou po [error userInfo]
?Ouais j'ai essayé d'erreur d'impression de l'
userInfo
. A obtenu le même résultat que la précédente sauf que l'erreur de domaine et le code ne sont pas imprimés.Ce n'
po [error userInfo]
veux dire?po [error userInfo]
est une commande pour le débogueur d'imprimer la userInfo dictionnaire, semblable à la NSLog
déclaration.Je ne pense pas que vous allez trouver une bonne solution générale de cette. Des erreurs ont différents userInfo dictionnaires.
OriginalL'auteur Chaitanya Gupta | 2011-08-24
Vous devez vous connecter pour publier un commentaire.
userInfo est un NSDictionary
Imprime quelque chose comme cela pour moi
Vous pouvez également essayer:
Qui imprime:
OriginalL'auteur superlogical
Pas très cool de la solution - vous pouvez écrire votre propre catégorie pour la NSError de classe et de représenter le texte comme vous le souhaitez.
userInfo
dictionnaire est le coupable. Ce ne sera pas toujours le cas.OriginalL'auteur d.lebedev