Comment appeler une fonction avec la signature suivante?
InAppHandler.purchaseSubscription("test") {
processPurchase()
}
est-ce
func purchaseSubscription(productId: String, completion: @escaping (Bool, String, String) -> Void) {
6 Réponses :
ceci est votre appel:
func purchaseSubscription(productId: String, completion: @escaping (Bool, String, String) -> Void) {
completionResult(true,"Data1", "Data2")
}
Et voici votre définition: XXX
Le gestionnaire de complétion nécessite trois paramètres d'entrée. Vous pouvez ignorer les paramètres, mais vous devez être explicite à ce sujet. De plus, la signature indique qu'il s'agit d'une fonction membre, alors que vous semblez appeler la fonction sur le type (class, struct, enum ...). Donc, la bonne façon serait:
let inAppHandler = InAppHandler()
inAppHandler.purchaseSubscription(productId: "test") { _, _, _ in
processPurchase()
}
Voici le code que vous devez utiliser:
InAppHandler.purchaseSubscription(productId: "test") { (boolVal1, stringVal, boolVal2) in
processPurchase()
}
Votre appel doit ressembler à ceci
InAppHandler.purchaseSubscription(productId: "YOUR_PRODUCT_ID_STRING") { (boolValue, firstString, secondString) in
}
Puisque vous n'utilisez aucun des paramètres de fermeture, il est recommandé d'utiliser _
purchaseSubscription(productId: "Id") { success, _, _ in
if success {
processPurchase()
}
}
Il est bon de vérifier le paramètre de fermeture avant de procéder à processPurchase ( )
purchaseSubscription(productId: "Id") { _, _, _ in
processPurchase()
}
Il peut y avoir plusieurs formulaires pour appeler la méthode.
1. Définissez les paramètres lors de l'appel de la fermeture , ue
InAppHandler.purchaseSubscription(productId: "test") {(_, _, _) in
processPurchase()
}
.purchase Subscription ("test") {flag, x, y inoùflagest leBooketx,yvos chaînes