创建一个 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域和您自己的项目/应用程序的代码
Swift 3.1:自定义错误转换为 NSError 以访问其域属性时崩溃
带有 NSFetchedResultsControllers 的 NSError 对象
无法在 AppDelegate coredata,Swift 2 中使用(域,代码,userInfo)调用类型“NSError”的初始化程序