使用Swift到Google应用引擎端点创建REST请求时出错

我尝试使用Swift for Google应用程序引擎端点请求我的对象,但是我收到了一个错误,我试图纠正它,但它不会只是通过。 无论如何,我是iOS开发的新手。

import UIKit class MainController: UITabBarController { var service : GTLRMyApiService? var myvalue: String? override func viewDidLoad() { if service == nil { service = GTLRMyApiService() service?.retryEnabled = true } let query : GTLRMyApiQuery_GetRates = GTLRMyApiQuery_GetRates.query() var ticket = GTLRServiceTicket.initialize ticket = service!.executeQuery(query, completionHandler: { (ticket: GTLRServiceTicket, object: AnyObject!, error: NSError) -> Void in print("Analytics: \(object) or \(error)") let resp : GTLRMyApi_MyRates = object as! GTLRMyApi_MyRates print("Black Market Dollar rate is: \(resp.value1)") self.myvalue = resp.value1 }) } 

它给出了错误:

无法将类型’(GTLRServiceTicket,AnyObject!,NSError) – > Void’的值转换为预期的参数类型’GTLRServiceCompletionHandler?’

我有同样的问题,并通过更改闭包中的参数展开来解决它:

 ticket = service!.executeQuery(query, completionHandler: { (ticket: GTLRServiceTicket!, object: AnyObject?, error: NSError?) -> Void in print("Analytics: \(object) or \(error)") let resp : GTLRMyApi_MyRates = object as! GTLRMyApi_MyRates print("Black Market Dollar rate is: \(resp.value1)") self.myvalue = resp.value1 }) 

我不是Swift专家,但我想这需要匹配函数的Objective-C实现所期望的。 Xcode没有说清楚。

我也面临同样的问题,但通过删除不需要的选项,它将正常工作。

  self.service.executeQuery(batchQuery) { (ticket:GTLRServiceTicket, object:Any?, error:Error?) in let data: GTLRBatchResult = object as! GTLRBatchResult var messages = data.successes for datata in messages!{ var mussage : GTLRGmail_Message = datata.value as! GTLRGmail_Message print(mussage.identifier) } }