CustomNSError协议(protocol)有什么作用,为什么要采用它?
Apple提供的文档仅说明:



我已经在Google上搜索过,但是在那找不到与我的问题有关的任何内容。

最佳答案



因此,您需要CustomNSErrorLocalizedErrorRecoverableError才能将运行时显式映射到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)
    }
}

10-07 22:58