OSX/Cocoa的错误代码参考

Kri*_*son 15 macos xcode cocoa

如果我从Cocoa函数得到错误代码结果,是否有任何简单的方法来弄清楚它的含义(除了通过浏览框架包中的所有.h文件)?

Chr*_*son 22

你应该查看<Framework/FrameworkErrors.h>你使用的方法的任何框架的标题,返回错误来自.

例如,NSError您从Foundation框架中的方法获得的Cocoa域中code将在<Foundation/FoundationErrors.h>标头中描述其属性.与AppKit和<AppKit/AppKitErrors.h>Core Data一样<CoreData/CoreDataErrors.h>.

此外,如果您打印NSError调试器中的描述,它不仅应包括错误域和代码,还应包括实际错误代码常量的名称,以便您可以在API参考中查找它.


Mar*_*ery 5

Apple的错误处理编程指南中的 "错误域"和"错误代码"部分可以很好地解决这个问题.您需要执行以下操作:

  1. 记录错误,记下错误域(一个人类可读/可用的字符串,告诉你在哪里查找错误代码定义)和错误代码本身(一个整数)

  2. 在Google上嗅探(或从下面的列表中读取)并找出头文件的名称,其中定义了该错误域的错误代码

  3. 搜索这些头文件以获取您获得的错误代码.您应该找到错误代码的常量名称(例如ENOMEM),并希望还有解释/* Cannot allocate memory */错误含义的解释性注释(如).如果没有评论,并且常量名称不是不言自明的,那么Google就是常量名称,您可能会找到正确的描述.

主要错误域的一些头文件:

NSCocoaErrorDomain

错误代码声明分布在三个头文件中:

  • <Foundation/FoundationErrors.h> (通用基金会错误代码)
  • <AppKit/AppKitErrors.h> (通用AppKit错误代码)
  • <CoreData/CoreDataErrors.h> (核心数据错误代码)

NSURLErrorDomain

校验 NSURLError.h

NSXMLParserErrorDomain

校验NSXMLParser.h

NSMachErrorDomain

校验 /usr/include/mach/kern_return.h

NSPOSIXErrorDomain

校验 /usr/include/sys/errno.h

NSOSStatusErrorDomain

校验

/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h
Run Code Online (Sandbox Code Playgroud)