NSError NSLocalizedDescription 自动生成
19 May 2017
现状
在 iOS 中我们常常会使用 NSError 来封装错误信息,相比于单纯的错误码,NSError 包含更多的信息。主要有
domain 错误发生域
code 错误码
userInfo 详细信息
但这也意味着它的使用更繁琐些,一个简单的 NSError 初始化方法往往是这样
NSError *error = [NSError errorWithDomain:NIMLocalErrorDomain
code:NIMLocalErrorCodeInvalidParam
userInfo:nil];
这里我们定义了自己的字符串常量 NIMLocalErrorDomain 来表示错误发生域和 NIMLocalErrorCode 枚举表示对应的错误码。但一个懒得要死的程序员显然对这种繁琐的初始化方法不感冒,然后就引入了宏定义使自己少写几行代码:
#define NIMLocalError(x) ([NSError errorWithDomain:NIMLocalErrorDomain \
code:(x) \
userInfo:nil])
这样我们就可以使用 NSError *error = NIMLocalError(NIMLocalErrorCodeInvalidParam) 这种稍微简单的写法。
这是前几天我开脑洞之前云信这边的 NSError 的标准写法。
问题
但是这样写法有个比较大的问题,当上层开发或者我们的客户在开发过程中碰到错误后,他只能看到 NSError 的 domain 和 code 信息(这也是我们在使用苹果某些 API 时常常会碰到的问题,