Domanda

Se ho un codice di errore il risultato di un Cacao in funzione, c'è un modo semplice per capire cosa significa (diverso da un grep attraverso tutte le .h i file nel quadro bundle)?

È stato utile?

Soluzione

Si dovrebbe guardare il <Framework/FrameworkErrors.h> intestazione per qualsiasi quadro il metodo che si sta utilizzando è la restituzione di un errore deriva dal.

Per esempio, un NSError nel Cacao di dominio che si ottiene da un metodo di Fondazione quadro avrà la sua code la struttura descritta nel <Foundation/FoundationErrors.h> di intestazione.Allo stesso modo con AppKit e <AppKit/AppKitErrors.h> e di Dati di base e <CoreData/CoreDataErrors.h>.

Inoltre, se si stampa la descrizione del NSError nel debugger, esso dovrebbe includere non solo l'errore di dominio e il codice, ma anche il nome dell'attuale codice di errore costante, così si può cercare in riferimento alle API.

Altri suggerimenti

Per le sezioni di Errore "Domini" e "Codici di Errore" in Apple Errore Di Movimentazione Manuale Di Programmazione, indirizzo di questa ragionevolmente bene.È necessario effettuare le seguenti operazioni:

  1. Il Log l'errore, prendendo nota di entrambi i errore di dominio (human-readable / Googleable stringa che ti dice dove cercare il codice di errore "definizioni") e il il codice di errore stesso (un intero)

  2. Annusare in giro su Google (o leggere dall'elenco di seguito) e capire il nome del file di intestazione(s) in cui i codici di errore per errore dominio sono definiti

  3. La ricerca di quelle file di intestazione(s) per il codice di errore che hai.Si dovrebbe trovare un nome costante per il codice di errore (come ENOMEM), e magari anche un commento esplicativo (come /* Cannot allocate memory */) che spiega che l'errore significa.Se non c'è nessun commento, e il nome di costante non è auto-esplicativo, basta cercare su Google il nome di costante e probabilmente troverai una descrizione appropriata.

Alcuni file di intestazione di errore maggiore domini:

NSCocoaErrorDomain

Codice di errore dichiarazioni sono distribuite su tre file di intestazione:

  • <Foundation/FoundationErrors.h> (Generico Fondazione codici di errore)
  • <AppKit/AppKitErrors.h> (Generico AppKit codici di errore)
  • <CoreData/CoreDataErrors.h> (I Dati di nucleo codici di errore)

NSURLErrorDomain

Controllare NSURLError.h

NSXMLParserErrorDomain

ControllareNSXMLParser.h

NSMachErrorDomain

Controllare /usr/include/mach/kern_return.h

NSPOSIXErrorDomain

Controllare /usr/include/sys/errno.h

NSOSStatusErrorDomain

Controllare

/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h

Inoltre, Cacao NSError è pensato per essere visualizzabili per l'utente finale.Se proprio registro, dovrebbe essere leggibile.

Se stai parlando di Carbonio OSStatus e tali, MacErrors.h.

Per NSError errori aggiungere una riga di codice:

NSError     *error;

// ... Some code that returns an error

// Get the error as a string
NSString *s = [error localizedDescription];

// Observe the code for yourself or display to the user.   
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top