新的 Xcode 8 beta 4,NSError
是桥接到 Swift Error
协议类型。当处理失败的 SKPaymentTransaction
时,这会影响 StoreKit。您应该检查以确保错误没有发生,因为事务已被取消,以了解是否向用户显示错误消息。您可以通过检查错误的 code
来实现这一点。但是使用 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
就不是成员。