将Swift 2.3转换为Swift 3.0 – 错误,无法使用类型’的参数列表调用’dataTask’

前端之家收集整理的这篇文章主要介绍了将Swift 2.3转换为Swift 3.0 – 错误,无法使用类型’的参数列表调用’dataTask’前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将我的一个项目从Swift 2.3转换为Swift 3.0,但有些原因我得到以下错误

Cannot invoke ‘dataTask’ with an argument list of type'(with: NSMutableURLRequest,completionHandler:(Data?,UIRLResponse?,NSError) -> Void)’

Overloads for ‘dataTask’ exist with these partially matching parameter lists: (with: URLRequest,completionHandler:@escaping(Data?,URLResponse?,Error?) -> Void),(with: URL,completionHandler: @escaping(Data?,Error?) -> Void)

错误在下面的代码显示在此行中…

@H_301_10@let task = session.dataTask(with: request,completionHandler: { (responseData:Data?,response:URLResponse?,error:NSError?) -> Void in

有什么建议吗?

以下是发生错误函数的完整代码.

@H_301_10@func verifyReceipt(_ transaction:SKPaymentTransaction?){ let receiptURL = Bundle.main.appStoreReceiptURL! if let receipt = try? Data(contentsOf: receiptURL){ //Receipt exists let requestContents = ["receipt-data" : receipt.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0))] //Perform request do { let requestData = try JSONSerialization.data(withJSONObject: requestContents,options: JSONSerialization.WritingOptions(rawValue: 0)) //Build URL Request let storeURL = URL(string: "https://buy.itunes.apple.com/verifyReceipt")// production URL //let storeURL = NSURL(string: "https:/sandBox.itunes.apple.com/verifyReceipt") // Testing URL let request = NSMutableURLRequest(url: storeURL!) request.httpMethod = "Post" request.httpBody = requestData let session = URLSession.shared let task = session.dataTask(with: request,error:NSError?) -> Void in // do { let json = try JSONSerialization.jsonObject(with: responseData!,options: .mutableLeaves) as! NSDictionary print(json) if (json.object(forKey: "status") as! NSNumber) == 0 { // if let latest_receipt = json["latest_receipt_info"]{ self.validatePurchaseArray(latest_receipt as! NSArray) } else { let receipt_dict = json["receipt"] as! NSDictionary if let purchases = receipt_dict["in_app"] as? NSArray{ self.validatePurchaseArray(purchases) } } if transaction != nil { SKPaymentQueue.default().finishTransaction(transaction!) } DispatchQueue.main.sync(execute: { () -> Void in self.delegate?.managerDidRestorePurchases() }) } else { //Debug the receipt print(json.object(forKey: "status") as! NSNumber) } } catch { print(error) } }) task.resume() } catch { print(error) } } else { //Receipt does not exist print("No Receipt") } }
编译器需要URLRequest和Error @H_301_10@... var request = URLRequest(url: storeURL!) request.httpMethod = "Post" ... let task = session.dataTask(with: request,error:Error?) -> Void in

我建议省略所有类型的注释

@H_301_10@let task = session.dataTask(with: request,completionHandler: { (responseData,response,error) -> Void in

猜你在找的Swift相关文章