2009-10-13 9 views

Odpowiedz

103

Patrząc na dokumentacji NSError mi mówi, że trzeba zrobić coś takiego:

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

Powinno to wtedy daje wypisujesz czytelny ludzki

+2

Cóż, musi najpierw uzyskać błąd, aby uzyskać opis. A "opis" błędu będzie (obecnie) przynajmniej zawierał domenę i kod błędu, co może być bardziej przydatne w komunikacie dziennika konsoli. –

+0

Dzięki, widziałem tę funkcję, ale nie rozumiem, dlaczego dziennik mi daje (null). –

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

daje mi zerowy wiadomość

Następnie error jest nil, nie instancją NSError.

+0

Dzięki, to bardzo pomaga. Myślałem, że robię coś złego. Jaki jest najlepszy sposób na zarejestrowanie błędu? –

+0

Czy on też nie potrzebuje dereferencji 'NSError **'? – fbrereto

+1

Pierwotne pytanie nie miało dwóch gwiazdek. Abizern dodał drugą gwiazdkę; Wycofałem jego edycję, ponieważ nie wydaje mi się, żeby miało to sens w przypadku faktycznego pytania. Jeśli byłby to argument o podwójnej asterysce, generalnie (szczególnie dla NSError) byłby to argument * output *, więc metoda nie powinna próbować pobrać obiektu przez ten wskaźnik. –

2

Oto szorstki sposób użyć do dziennika błędów podczas rozwijanie; (Nie dla kakao-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 dba o wyświetlenie błędu.

+2

Oczywiście, jest to przydatne tylko na komputerze Mac. UIKit nie ma NSAlert. –

+0

Tak! Nie czytałem tagów. Dziękuję za wycofanie edycji. Wciąż uważam, że ta odpowiedź jest przydatna dla innych, o ile zauważą, że jest tylko na pulpicie. – Abizern

Powiązane problemy