根据 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)")
}
我严重误解了什么,或者这种明显不匹配的原因可能是什么?