Nowy w Xcode 8 beta 4, NSError
jest zmostkowany do typu protokołu Swift Error
. Wpływa to na StoreKit, gdy mamy do czynienia z błędnymi SKPaymentTransaction
s. Powinieneś sprawdzić, aby upewnić się, że błąd nie wystąpił, ponieważ transakcja została anulowana, aby dowiedzieć się, czy wyświetlać użytkownikowi komunikat o błędzie. Robisz to, sprawdzając błąd: code
. Ale z Error
zamiast NSError
nie zdefiniowano żadnego code
. Nie byłem w stanie dowiedzieć się, jak poprawnie uzyskać kod błędu z Error
.Kod dostępu w błędzie Swift 3
To działało w poprzedniej wersji Swift 3:
func failedTransaction(_ transaction: SKPaymentTransaction) {
if let transactionError = transaction.error {
if transactionError.code != SKErrorCode.paymentCancelled.rawValue {
//show error to user
}
}
...
}
Teraz error
jest Error
nie NSError
, code
nie jest członkiem.
Spróbuj 'if (transaction.error jako NSError) .code! = SKErrorCode.PaymentCancelled {' –
To działa, po prostu rzucając go jako' NSError', dzięki @LeoDabus – Joey