Новое в Xcode 8 beta 4, NSError подключено к типу протокола Swift Error. Это влияет на StoreKit при работе с неудачными SKPaymentTransaction s. Вы должны убедиться, что ошибка не произошла, потому что транзакция была отменена, чтобы узнать, показывать ли пользователю сообщение об ошибке. Вы делаете это, исследуя ошибку code. Но вместо Error Error не существует 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 not NSError, code не является членом.