2009-10-13 10 views

Antwort

103

Mit Blick auf die NSError Dokumentation sagt mir, dass Sie so etwas wie tun müssen:

NSLog(@"%@",[error localizedDescription]); 

Dies dann Sie hier für Menschen lesbare Ausgabe

+2

Nun, er braucht zuerst einen Fehler, um eine Beschreibung zu bekommen. Und die Beschreibung des Fehlers enthält (momentan) zumindest die Domäne und den Code des Fehlers, was in einer Konsolenprotokollnachricht nützlicher sein kann. –

+0

Danke, ich hatte diese Funktion gesehen, aber ich habe nicht verstanden, warum das Protokoll mich gab (null). –

19
NSLog(@"Error: %@", error); 

Gibt mir eine Null-Nachricht

Dann error ist nil, kein NSError Instanz.

+0

Danke, das hilft sehr. Ich dachte, ich würde etwas falsch machen. Was ist der beste Weg, um einen Fehler zu protokollieren? –

+0

Muss er den 'NSError **' nicht auch dereferenzieren? – fbrereto

+1

Die ursprüngliche Frage hatte keine zwei Sterne. Abizern hat den zweiten Stern hinzugefügt; Ich habe seine Bearbeitung rückgängig gemacht, weil ich denke, dass es für die eigentliche Frage keinen Sinn ergibt. Wenn es ein Doppelstern-Argument wäre, würde es im Allgemeinen (insbesondere für einen NSError) ein * Ausgabe * Argument sein, so dass die Methode nicht versuchen sollte, ein Objekt über diesen Zeiger abzurufen. –

2

geben sollte eine grobe Methode, das ich verwenden, um Fehler zu protokollieren, während Entwicklung; (Nicht für Cocoa-touch)

// Execute the fetch request put the results into array 
NSError *error = nil; 
NSArray *resultArray = [moc executeFetchRequest:request error:&error]; 
if (resultArray == nil) 
{ 
    // Diagnostic error handling 
    NSAlert *anAlert = [NSAlert alertWithError:error]; 
    [anAlert runModal]; 
} 

NSAlert kümmert sich um die Anzeige des Fehlers.

+2

Natürlich ist das nur auf dem Mac nützlich. UIKit hat keine NSAlert. –

+0

Ja! Ich habe die Tags nicht gelesen. Danke für den Rollback beim Bearbeiten. Ich denke immer noch, dass diese Antwort nützlich ist, um anderen zu überlassen, solange sie merken, dass es nur für den Desktop ist. – Abizern

Verwandte Themen