如何通过在完成处理数据

问题描述 投票:0回答:1

我想一个IAP收据传递给包含用户,并想检查是否有用户completion handler是目前在其他一些subscription我得到调用此活动的一个class。我怎样才能解决这个问题。

不能调用非功能型的价值“((学生) - >无效)?”

func validateReceipt(pReceiptData: Data? = nil, completion pCompletion: ((Student) -> Void)? = nil) {
    let receiptData = pReceiptData!.base64EncodedString()
    let receiptDict: [String: Any] = ["receipt-data": receiptData]
    do {
        let data = try JSONSerialization.data(withJSONObject: receiptDict)
        guard let validationUrl = URL(string: "https://us-central1-myApp-a8e27.cloudfunctions.net/receiptValidation") else { return }
        let session = URLSession(configuration: .default)
        var request = URLRequest(url: validationUrl, cachePolicy: .reloadIgnoringLocalCacheData)
        request.httpMethod = "POST"
        request.httpBody = data
        let task = session.uploadTask(with:request, from: data) { (data, response, error) in
            guard let data = data, error == nil else { return }
            do {
                let receipt = try IAPReceipt.decode(data: data)
                pCompletion(receipt)

            } catch let error {
                print(error.localizedDescription)
            }
        }
        task.resume()
    } catch let error {
        print(error)
    }
}
ios swift closures completionhandler
1个回答
0
投票

你可以利用typealias,使您的函数声明有点清洁。看一看在完成块是怎么做的。

typealias Completion = ((_ student: Student) -> Void)?
func validateReceipt(pReceiptData: Data? = nil, completion: Completion = nil) {
      ...  
}
© www.soinside.com 2019 - 2024. All rights reserved.