2009-10-13 14 views
49

¿Cuál es la mejor manera de registrar un NSError?¿Cómo puedo ver un NSError?

- (void)checkThing:(Thing *)thing withError:(NSError *)error { 
    NSLog(@"Error: %@", error); 
} 

me da un mensaje null

Respuesta

103

En cuanto a la documentación NSError me dice que tendrá que hacer algo como:

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

Esto entonces debe darle salida legible por humanos

+2

Bueno, él necesita tener un error para obtener una descripción de, primero. Y la 'descripción' del error (al menos en la actualidad) contendrá al menos el dominio y el código del error, que puede ser más útil en un mensaje de registro de la consola. –

+0

Gracias, había visto esta función, pero no entendía por qué el registro me estaba dando (nulo). –

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

Me da un mensaje nulo

Entonces es errornil, no una instancia NSError.

+0

Gracias, esto ayuda mucho. Pensé que estaba haciendo algo mal. ¿Cuál es la mejor manera de registrar un error, entonces? –

+0

¿No necesita desreferenciar el 'NSError **' también? – fbrereto

+1

La pregunta original no tenía dos asteriscos. Abizern agregó el segundo asterisco; He revertido su edición, porque no creo que tenga sentido para la pregunta real. Si fuera un argumento de doble asterisco, generalmente (especialmente para un NSError) sería un argumento * output *, por lo que el método no debería intentar recuperar un objeto a través de ese puntero. –

2

Aquí es un método en bruto que utilizo para registrar los errores, mientras desarrollando; (No para Cacao-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 se encarga de mostrar el error.

+2

Por supuesto, eso solo es útil en la Mac. UIKit no tiene NSAlert. –

+0

¡Sí! No leí las etiquetas. Gracias por la reversión en la edición. Todavía creo que esta respuesta es útil para otros, siempre que tomen nota de que es solo para el escritorio. – Abizern

Cuestiones relacionadas