新的在Xcode 8 beta 4,NSError被桥接到Swift错误协议类型。这在处理失败的SKPaymentTransactions时会影响StoreKit。您应该检查以确保未发生错误,因为事务已取消,以了解是否向用户显示错误消息。你这样做通过检查错误的代码。但是使用Error而不是NSError,没有定义代码。我没有能够弄清楚如何正确地从错误获取错误代码。
这在以前的版本的Swift 3:
func FailedTransaction(_ transaction: SKPaymentTransaction) { if let transactionError = transaction.error { if transactionError.code != SKErrorCode.paymentCancelled.rawValue { //show error to user } } ... }
转换为SKError似乎对我在xCode 8和Swift 3 …
原文链接:https://www.f2er.com/swift/320840.htmlguard let error = transaction.error as? SKError else {return} switch error.code { // https://developer.apple.com/reference/storekit/skerror.code case .unknown: break case .paymentCancelled: break case .clientInvalid: break case .paymentInvalid: break case .paymentNotAllowed: break case .cloudServiceNetworkConnectionFailed: break case .cloudServicePermissionDenied: break case .storeProductNotAvailable: break }
不需要rawValue。