swift – 将ErrorType转换为NSError会丢失关联的对象

swift – 将ErrorType转换为NSError会丢失关联的对象,第1张

概述在Swift 2.0中NSError符合ErrorType协议。 对于自定义的错误,我们可以为某些情况指定关联对象,如下所示。 enum LifeError: ErrorType { case BeBorn case LostJob(job: String) case GetCaughtByWife(wife: String) ...} 我们可以舒适地做以下事情: 在Swift 2.0中NSError符合ErrorType协议。

对于自定义的错误,我们可以为某些情况指定关联对象,如下所示。

enum lifeError: ErrorType {    case BeBorn    case LostJob(job: String)    case GetCaughtByWife(wife: String)    ...}

我们可以舒适地做以下事情:

do {    try haveAffairWith(otherPerson)} catch lifeError.GetCaughtByWife(let wife) {    ...}

然而,如果我们想要它作为NSError传递到其他地方,它会丢失其关联对象信息。

println("\(lifeError.GetCaughtByWife("name") as NSError)")

打印:

Error Domain=... Code=1 "The operation Couldn't be completed". (... error 1)

并且其userInfo为nil。

我的妻子在哪里与ErrorType关联?

Xcode 8中的新功能:CustomNSError protocol。
enum lifeError: Error,CustomNSError {    case beBorn    case lostJob(job: String)    case getCaughtByWife(wife: String)    static var errorDomain: String {        return "lifeError"    }    var errorCode: Int {        switch self {        case .beBorn:            return 0        case .lostJob(_):            return 1        case .getCaughtByWife(_):            return 2        }    }    var errorUserInfo: [String : AnyObject] {        switch self {        case .beBorn:            return [:]        case .lostJob(let job):            return ["Job": job]        case .getCaughtByWife(let wife):            return ["Wife": wife]        }    }}
总结

以上是内存溢出为你收集整理的swift – 将ErrorType转换为NSError会丢失关联的对象全部内容,希望文章能够帮你解决swift – 将ErrorType转换为NSError会丢失关联的对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1059415.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存