尝试在 swift 2.0 中执行 GET 请求时出错

Posted

技术标签:

【中文标题】尝试在 swift 2.0 中执行 GET 请求时出错【英文标题】:Error trying to perform a GET request in swift 2.0 【发布时间】:2015-09-01 23:30:37 【问题描述】:

所以我试图在 Swift 2.0 中执行 GET 请求,在从 Swift 1.2 迁移几行代码后,我收到了这个错误,我并不真正了解如何绕过它/正确迁移它.

函数写成如下:

func performGetRequest(targetURL: NSURL!, completion: (data: NSData?, HTTPStatusCode: Int, error: NSError?) -> Void) 
    let request = NSMutableURLRequest(URL: targetURL)
    request.HTTPMethod = "GET"

    let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()

    let session = NSURLSession(configuration: sessionConfiguration)

    let task = session.dataTaskWithRequest(request, completionHandler:  (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
        dispatch_async(dispatch_get_main_queue(),  () -> Void in
            completion(data: data, HTTPStatusCode: (response as! NSHTTPURLResponse).statusCode, error: error)
        )
    )


    task.resume()

在此之后,Xcode 向我输出以下错误:

无法使用类型为“(NSMutableURLRequest, completionHandler: (NSData!, NSURLResponse!, NSError!) -> Void)”的参数列表调用“dataTaskWithRequest”

你有没有遇到过这个问题,或者知道如何解决它?

【问题讨论】:

【参考方案1】:

这段代码应该可以工作。使用 Swift,您需要让它尽可能多地决定变量的类型。请注意,我取出了你的石膏。

    func performGetRequest(targetURL: NSURL!, completion: (data: NSData?, HTTPStatusCode: Int, error: NSError?) -> Void) 
    let request = NSMutableURLRequest(URL: targetURL)
    request.HTTPMethod = "GET"

    let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()

    let session = NSURLSession(configuration: sessionConfiguration)

    let task = session.dataTaskWithRequest(request, completionHandler:  (data, response, error) -> Void in
        dispatch_async(dispatch_get_main_queue(),  () -> Void in
            completion(data: data, HTTPStatusCode: (response as! NSHTTPURLResponse).statusCode, error: error)
        )
    )


    task.resume()

【讨论】:

以上是关于尝试在 swift 2.0 中执行 GET 请求时出错的主要内容,如果未能解决你的问题,请参考以下文章