新的 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就不是成员。