[英]How do I call a function with the following completion handler?
如何使用以下簽名調用 function?
func purchaseSubscription(productId: String, completion: @escaping (Bool, String, String) -> Void) {
是嗎
InAppHandler.purchaseSubscription("test") {
processPurchase()
}
可以有多個 forms 調用該方法。
1.定義調用closure
時的參數,ue
InAppHandler.purchaseSubscription(productId: "test") {(x, y, z) in
print(x, y, z)
processPurchase()
}
2.在調用閉包時,可以對closure
中的參數使用簡寫形式( $0, $1
等),即
InAppHandler.purchaseSubscription(productId: "test") {
print($0, $1, $2)
processPurchase()
}
上面2個是一樣的。 只是在第一個中您提供參數名稱,而在第二個中您使用這些參數的簡寫。
3.如果您沒有使用closure
中的任何參數,請像這樣用下划線( _
)標記它們,
InAppHandler.purchaseSubscription(productId: "test") {(_, _, _) in
processPurchase()
}
您可以根據需要使用任何其他 forms。
完成處理程序需要三個輸入參數。 您可以忽略參數,但必須明確說明。 此外,簽名表明這是一個成員 function,而您似乎在類型(類、結構、枚舉...)上調用 function。 所以正確的方法是:
let inAppHandler = InAppHandler()
inAppHandler.purchaseSubscription(productId: "test") { _, _, _ in
processPurchase()
}
這是您的電話:
InAppHandler().purchaseSubscription(productId: "anyStringData") { (boolCheck, result1, result2) in
print(result1)
}
這是你的定義:
func purchaseSubscription(productId: String, completion: @escaping (Bool, String, String) -> Void) {
completionResult(true,"Data1", "Data2")
}
這是您需要使用的代碼:
InAppHandler.purchaseSubscription(productId: "test") { (boolVal1, stringVal, boolVal2) in
processPurchase()
}
你的電話應該是這樣的
InAppHandler.purchaseSubscription(productId: "YOUR_PRODUCT_ID_STRING") { (boolValue, firstString, secondString) in
}
由於您沒有使用任何閉包參數,因此建議使用_
purchaseSubscription(productId: "Id") { _, _, _ in
processPurchase()
}
最好在執行 processPurchase() 之前檢查關閉參數
purchaseSubscription(productId: "Id") { success, _, _ in
if success {
processPurchase()
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.