微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当桥接到 NSError 实例时,代码如何归因于 Error 实例?

如何解决当桥接到 NSError 实例时,代码如何归因于 Error 实例?

我想知道如何将整数错误代码归因于 Error 的实例,因为它们被桥接到 NSError

考虑以下代码

import Foundation

enum CustomError: Error {
    case john(guitar: String)
    case paul(bass: String)
    case george(guitar: String)
    case ringo(drums: String)
    case didDetectSomething
    case didReceiveSomething
    case undecodableDate(dateAsstring: String)
    case unexpectedSomething(type: String)
    case nildeviceidentifier
}

let errors: [CustomError] = [
    .ringo(drums: "Ludwig"),.paul(bass: "Rickenbacker"),.george(guitar: "Fender"),.john(guitar: "Gibson"),.undecodableDate(dateAsstring: "String"),.didDetectSomething
]

errors.forEach { error in
    print(error)
    print(error.localizedDescription)
    let nsError = error as NSError
    print("code: \(nsError.code)")
}

它会输出

ringo(drums: "Ludwig")
The operation Couldn’t be completed. (__lldb_expr_82.CustomError error 3.)
code: 3
paul(bass: "Rickenbacker")
The operation Couldn’t be completed. (__lldb_expr_82.CustomError error 1.)
code: 1
george(guitar: "Fender")
The operation Couldn’t be completed. (__lldb_expr_82.CustomError error 2.)
code: 2
john(guitar: "Gibson")
The operation Couldn’t be completed. (__lldb_expr_82.CustomError error 0.)
code: 0
undecodableDate(dateAsstring: "String")
The operation Couldn’t be completed. (__lldb_expr_82.CustomError error 4.)
code: 4
didDetectSomething
The operation Couldn’t be completed. (__lldb_expr_82.CustomError error 6.)
code: 6

似乎声明的顺序首先起作用(John 是 0,Paul 是 1 等),但随后 undecodableDate代码为 4,并在 didDetectSomething 之后声明了代码6.

所以我的问题是:

  • 是否有任何有关此过程的文档?
  • 它是随机的还是确定性的? (更具体地说,无论编译或运行时配置如何,一段给定的代码是否总是最终将相同的代码归因于相同的错误?)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?