Come posso visualizzare un NSError?

Qual è il modo migliore per registrare un NSError?

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

Mi dà un null messaggio

InformationsquelleAutor nevan king | 2009-10-13

 

3 Replies
  1. 111

    Guardando il NSError documentazione mi dice che è necessario fare qualcosa di simile:

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

    Questo dovrebbe darvi leggibile uscita

    • Beh, lui ha bisogno di avere un errore per ottenere una descrizione di prima. E l’errore è description avrà (per il momento) almeno contenere l’errore dominio e il codice, che può essere più utile in una console messaggio di log.
    • Grazie, avevo visto questa funzione, ma non ho capito perché il registro è stato mi dà (null).
  2. 19
    NSLog(@"Error: %@", error);

    Mi dà un messaggio null

    Poi error è nil, non un NSError istanza.

    • Grazie, questo aiuta molto. Ho pensato che stavo facendo qualcosa di sbagliato. Qual è il modo migliore per registrare un errore, allora?
    • Non ha bisogno di risolvere il NSError** così?
    • La domanda originale non sono due asterischi. Abizern aggiunto il secondo asterisco; ho eseguito il rollback sua modifica, perché io non penso che abbia senso per l’effettiva domanda. Se si trattasse di un doppio asterisco argomento, in genere (esp. per un NSError) essere un output argomento, in modo che il metodo non deve tentare di recuperare un oggetto attraverso il puntatore.
    • nevan: NSLog, esattamente il modo in cui lo si sta facendo. È necessario disporre di un errore di registro, prima di poter entrare un errore; il tuo problema (in quanto è un problema) è che non si dispone di un errore.
  3. 2

    Ecco una ruvida metodo che uso io per gli errori di registro, mentre in via di sviluppo; (Non per 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 si prende cura di visualizzare l’errore.

    • Naturalmente, che è utile solo su Mac. UIKit non ha NSAlert.
    • Yeah! Non ho letto le etichette. Grazie per il rollback su modifica. Penso ancora che questa risposta è utile lasciare agli altri, purché prendere nota solo per il desktop.

Lascia un commento