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.

Avez-vous essayé simplement 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

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *