ios - 完成处理程序混淆
问题描述
我目前正在使用 SwiftyStoreKit 进行应用内购买,我用来尝试获取价格和产品描述等信息的功能有一个完成处理程序,我不熟悉使用完成处理程序并阅读 @escape if我想返回一个字符串或让一个值转义。我的功能代码如下:
func getPrice(product: IAPProducts, completion: @escaping (String) -> Void) {
var priceString = ""
SwiftyStoreKit.retrieveProductsInfo(["Grant.Marco.1000Coins"]) { result in
if let product = result.retrievedProducts.first {
priceString = product.localizedPrice!
print("Product: \(product.localizedDescription), price: \(priceString)")
}
else if let invalidProductId = result.invalidProductIDs.first {
print("Invalid product identifier: \(invalidProductId)")
}
else {
print("Error: \(String(describing: result.error))")
}
}
completion(priceString)
}
我现在遇到的问题是,当我想在标签文本中显示该价格时,它会询问完成信息
我要为此付出什么?
解决方案
你需要这样称呼它
SwiftyStoreKitController.shared.getPrice(product:IAPProducts.thousand) { (price) in
// set here
let label = SKLabelNode(text:price)
}
完成的地方也需要改变
func getPrice(product: IAPProducts, completion: @escaping (String) -> Void) {
var priceString = ""
SwiftyStoreKit.retrieveProductsInfo(["Grant.Marco.1000Coins"]) { result in
if let product = result.retrievedProducts.first {
priceString = product.localizedPrice!
print("Product: \(product.localizedDescription), price: \(priceString)")
}
else if let invalidProductId = result.invalidProductIDs.first {
print("Invalid product identifier: \(invalidProductId)")
}
else {
print("Error: \(String(describing: result.error))")
}
completion(priceString) // << here
}
}
推荐阅读
- python - 类问题 - 程序按预期工作,但 Visual Studio 代码突出显示语法错误
- python - 无法使用python脚本保存excel文件
- python - 如何在 SentenceTransformers 中设置代理?
- angular - ng build 在 docker(ubuntu)上失败(找不到模块),但在 windows 10 上工作
- vue.js - 无法在 VueJS 中选择带有 v-model 的 chechbox
- webrtc - 将视频从自定义摄像机发布到 antmedia 服务器
- android - 如何在 Android Studio 中获取 Pixel 5 模拟器
- android - 如何在 Android 上显示非整数版本代码
- cognos - 两个日期字段,一个日期过滤器
- javascript - 使用没有 async/await 的 promise-returning 代码