73 votes

Erreur d'accès au code dans Swift 3

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

1voto

Satnam Sync Points 1180

Beaucoup de choses changent. Voici la mise à jour pour Xcode 11.

if let skError = transaction.error as? SKError, skError.code == .paymentCancelled { print("Cancelled") }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X