Xcode 8 beta 4 中的新增功能,NSError
已桥接到 Swift Error
协议(protocol)类型。这会在处理失败的 SKPaymentTransaction 时影响 StoreKit。您应该检查以确保没有因为事务被取消而发生错误,以了解是否向用户显示错误消息。您可以通过检查错误的代码
来完成此操作。但是使用 Error
而不是 NSError
时,没有定义 code
。我一直无法弄清楚如何正确地从 Error
获取错误代码。
这在以前版本的 Swift 3 中有效:
func failedTransaction(_ transaction: SKPaymentTransaction) {
if let transactionError = transaction.error {
if transactionError.code != SKErrorCode.paymentCancelled.rawValue {
//show error to user
}
}
...
}
现在 error
是 Error
而不是 NSError
,code
不是成员。
最佳答案
访问 Swift 3 错误类型中的代码和域属性的另一个选项是将其扩展如下:
extension Error {
var code: Int { return (self as NSError).code }
var domain: String { return (self as NSError).domain }
}
关于swift - 在 Swift 3 中访问代码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39628203/