代码之家  ›  专栏  ›  技术社区  ›  Astrum

完成处理程序混乱

  •  1
  • Astrum  · 技术社区  · 7 年前

    我目前正在使用SwiftyStoreKit进行应用内购买,我用来尝试获取价格和产品描述等信息的函数有一个完成处理程序,我对使用完成处理程序很陌生,如果我想返回字符串或让值转义,请阅读@escape。我的功能代码如下:

    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)
    }
    

    我该怎么办?

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  2
  •   Shehata Gamal    7 年前

    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 
        }
    
    }
    
    推荐文章