Código de erro de Referência para OSX/Cacau
Pergunta
Se eu receber um código de erro resultado de um Cacau função, existe alguma maneira de descobrir o que ela significa (que por grepping através de todos os .h arquivos no quadro bundles)?
Solução
Você deve olhar para o <Framework/FrameworkErrors.h>
cabeçalho para qualquer que seja a estrutura do método que você está usando que está retornando um erro vem.
Por exemplo, uma NSError
na Cacau domínio que você começa a partir de um método do framework Foundation irá ter a sua code
imóvel descrito na <Foundation/FoundationErrors.h>
cabeçalho.Da mesma forma com AppKit e <AppKit/AppKitErrors.h>
e o Núcleo de Dados e <CoreData/CoreDataErrors.h>
.
Além disso, se você imprimir a descrição do NSError
no depurador, ele deve incluir não apenas o erro de domínio e de código, mas também o nome do atual código de erro constante, de modo que você pode procurar na referência da API.
Outras dicas
As seções de Erro "Domínios" e "Códigos de Erro" na Apple Tratamento De Erro Guia De Programação este endereço razoavelmente bem.Você precisa fazer o seguinte:
O Log do erro, tomando nota de ambos os erro de domínio (humano-legível / Googleable de seqüência de caracteres que indica onde procurar as definições de código de erro) e o código de erro em si (um inteiro)
Farejar no Google (ou ler da lista abaixo) e descobrir o nome do arquivo de cabeçalho(s), onde os códigos de erro para o erro de domínio são definidos
Procurar aqueles ficheiro de cabeçalho(s) para o código de erro que você tem.Você deve encontrar o nome de uma constante para o código de erro (como
ENOMEM
), e espero que também de um comentário explicativo (como/* Cannot allocate memory */
) explicando o que significa o erro.Se não há nenhum comentário, e o nome constante não é auto-explicativo, apenas Google o nome constante e você provavelmente vai encontrar uma boa descrição.
Alguns ficheiros de cabeçalho de erro principais domínios:
NSCocoaErrorDomain
Código de erro declarações são distribuídos em três arquivos de cabeçalho:
<Foundation/FoundationErrors.h>
(Genérico Fundação códigos de erro)<AppKit/AppKitErrors.h>
(Genérico AppKit códigos de erro)<CoreData/CoreDataErrors.h>
(Núcleo de Dados de códigos de erro)
NSURLErrorDomain
Seleção NSURLError.h
NSXMLParserErrorDomain
SeleçãoNSXMLParser.h
NSMachErrorDomain
Seleção /usr/include/mach/kern_return.h
NSPOSIXErrorDomain
Seleção /usr/include/sys/errno.h
NSOSStatusErrorDomain
Seleção
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h
Além disso, o Cacau é NSError destina-se a ser visualizável para o usuário final.Se você acabou de registrar, deve ser legível.
Se você está falando de Carbono do OSStatus e tal, MacErrors.h.
Para NSError erros de adicionar uma linha de código:
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.