创建一个 NSError 域

Posted

技术标签:

【中文标题】创建一个 NSError 域【英文标题】:Creating an NSError Domain 【发布时间】:2012-05-08 13:12:45 【问题描述】:

我想为我的应用程序创建一个自定义错误域。我有一个枚举的 NSInteger 类型,它涵盖了我可以获得的所有可能的错误代码,我的问题是如何将这些与我的自定义域相关联?谢谢。

【问题讨论】:

【参考方案1】:

您的域只是一个命名它的字符串。您无需在任何地方注册。

在带有错误代码的标题中,添加以下行:

extern NSString *const MyErrorDomain;

在你的实现文件中:

NSString *const MyErrorDomain = @"MyErrorDomain";

然后您可以为您的错误域使用该命名常量。完成!

【讨论】:

只是为了澄清当你说实施文件时,最好的地方是哪里?我正在创建一个自定义错误类。我的错误。 但是,最好使用反向 url 方案,例如com.mycompany.myapp.error。如果您只想在一个自定义错误中使用它,请将定义放在 MyError.m 文件中,不能从外部访问。 @MarioPen:您的.m 文件。如果您没有与 enum 所在的标题匹配的标题,最佳做法是制作一个并将常量放在那里。 @Sulthan 反向符号通常不用于错误域,因为它们可以呈现给用户,并且符号通常会使它们很长。不过,这完全取决于样式/偏好,因为任何字符串都将被视为有效的错误域。 @JonathanGrynspan 错误域不应该呈现给用户。绝不。格式推荐在developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/…

以上是关于创建一个 NSError 域的主要内容,如果未能解决你的问题,请参考以下文章

最佳实践 - NSError域和您自己的项目/应用程序的代码

无法创建 NSError:无法识别的选择器

Swift 3.1:自定义错误转换为 NSError 以访问其域属性时崩溃

创建 NSError * 导致应用程序崩溃

带有 NSFetchedResultsControllers 的 NSError 对象

无法在 AppDelegate coredata,Swift 2 中使用(域,代码,userInfo)调用类型“NSError”的初始化程序