CustomNSError
协议(protocol)有什么作用,为什么要采用它?
Apple提供的文档仅说明:
我已经在Google上搜索过,但是在那找不到与我的问题有关的任何内容。
最佳答案
因此,您需要CustomNSError
,LocalizedError
和RecoverableError
才能将运行时显式映射到NSError。
更多信息here。
示例:
// 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)
}
}