该CustomNSError协议有什么作用,我为什么要采用它?
Apple 提供的文档仅说明:
描述专门提供域、代码和用户信息字典的错误类型。
我已经在谷歌上搜索过,但在那里找不到与我的问题相关的任何内容。
每个符合
Error协议的类型都隐式地桥接到NSError. 从 Swift 2 开始就是这种情况,其中编译器 提供域(即类型的重整名称)和代码(基于 枚举类型的鉴别器)。
所以你需要CustomNSError,LocalizedError和RecoverableError显式运行时映射到 NSError 。
更多信息在这里。
例子:
// Errors
enum ServiceError: Int, Error, CustomNSError {
case unknownError = -1000
case serverReturnBadData
//MARK: - CustomNSError
static var errorDomain: String = "reverse.domain.service.error"
var errorCode: Int { return self.rawValue }
var errorUserInfo: [String : Any] { return [:] } //TODO: Return something meaningful here
}
extension NSError {
var serviceError: ServiceError? {
return (self.domain == ServiceError.errorDomain
? ServiceError(rawValue: self.code)
: nil)
}
convenience init(serviceError: ServiceError) {
self.init(
domain: ServiceError.errorDomain,
code: serviceError.rawValue,
userInfo: serviceError.errorUserInfo)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2054 次 |
| 最近记录: |