SaneNSError 1.0

SaneNSError 1.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2014年12月

Håvard Fossli 维护。



  • Håvard Fossli

Sane NSError

创建NSError常令人困惑。根据Apple的指导方针以及社区如何使用NSError,可以安全地按如下方式理解错误键:

  • NSLocalizedDescriptionKey => 发生了什么错误,以及错误发生的原因
  • NSLocalizedFailureReasonErrorKey => 错误发生的原因
  • NSLocalizedRecoverySuggestionErrorKey => 如何绕过或修复错误的方法

示例代码

现在创建错误变得更容易且更明确

NSError *error = [NSError errorWithDomain:ZYZUserServiceDomain
                                     code:0
                      whatWentWrongAndWhy:@"Could not log in due to incorrect username and/or password"
                                      why:@"Username and/or password is incorrect"
                               suggestion:@"Verify username and password is typed correctly"];

方便的属性

@property (nonatomic, readonly) NSString *whatWentWrongAndWhy;  // NSLocalizedDescriptionKey
@property (nonatomic, readonly) NSString *why;                  // NSLocalizedFailureReasonErrorKey
@property (nonatomic, readonly) NSString *suggestion;           // NSLocalizedRecoverySuggestionErrorKey

使得获取相关信息变得非常简单

NSLog(@"Could not log in: %@", error.why);

常见问题解答

Q: 为什么有一个键同时包含“what”和“why”?我们已经在“FailureReason”-键中回答了“why”。
A: 这就是NSError的设计方式——这是一个很好的设计,因为它允许开发者选择一个结构良好、详细的长句,或者一个更简单的句子。

关键词

NSError,简单,设置,解释,如何构造NSError,NSLocalizedDescriptionKey,NSLocalizedFailureReasonErrorKey,NSLocalizedRecoverySuggestionErrorKey,domain,code。

作者是谁?

您可以在twitter上通过@hfossli找到我。我是一位在挪威奥斯陆的公司Agens.no的员工。

Agens | Digital craftsmanship