Nouveau dans Xcode 8 beta 4, NSError
est relié au Swift Error
type de protocole. Cela affecte StoreKit lorsqu'il traite les échecs SKPaymentTransaction
s. Vous devez vérifier que l'erreur ne s'est pas produite parce que la transaction a été annulée pour savoir s'il faut ou non afficher un message d'erreur à l'utilisateur. Pour ce faire, vous examinez le message d'erreur code
. Mais avec Error
au lieu de NSError
il n'y a pas de code
défini. Je n'ai pas réussi à comprendre comment obtenir correctement le code d'erreur à partir de Error
.
Cela fonctionnait dans la version précédente de Swift 3 :
func failedTransaction(_ transaction: SKPaymentTransaction) {
if let transactionError = transaction.error {
if transactionError.code != SKErrorCode.paymentCancelled.rawValue {
//show error to user
}
}
...
}
Maintenant que error
est un Error
no NSError
, code
n'est pas un membre.
1 votes
Essayez
if (transaction.error as NSError).code != SKErrorCode.PaymentCancelled {
1 votes
Cela fonctionne, il suffit de le couler comme un
NSError
Merci @LeoDabus