9

根据 Apple 的文档,在 Swift 中初始化 PKPass 需要两个元素,Pass 数据和错误指针。

init(data data: NSData,
error error: NSErrorPointer)

根据 Apple 的Swift 文档错误处理段落,

在 Cocoa 中,产生错误的方法将 NSError 指针参数作为它们的最后一个参数,如果发生错误,它会使用 NSError 对象填充其参数。根据 Swift 的原生错误处理功能,Swift 会自动将产生错误的 Objective-C 方法转换为抛出错误的方法。

不过有一个说明:

消耗错误的方法,例如委托方法或接受带有 NSError 对象参数的完成处理程序的方法,不会成为 Swift 导入时抛出的方法。

由于该方法似乎没有消耗,而是在需要时使用指针设置错误,这似乎与 Apple 对错误处理的解释背道而驰。我期待更多的代码如下:

  do {
      let modifiedPass : PKPass = try PKPass(data: data)
     } catch let errorCaught as NSError
     {
        print("Error: \(errorCaught.domain)")
    }

我严重误解了什么,或者这种明显不匹配的原因可能是什么?

4

0 回答 0