相关疑难解决方法(0)

如何在Swift中使用completionHandler Closure返回?

我正在尝试使用RESTful API来返回一些json数据.我想封装创建HTTP请求的代码并在其自己的方法中设置标头,以便我可以通过输入url String来调用它,然后让方法返回一个JSON对象.

在下面的代码片段中,我已经创建了请求对象并设置了标题,我将该变量称为"req".我没有声明任何名为data,response或error的对象.我有以下代码正确打印出一个JSON对象

let sesh = NSURLSession.sharedSession()
    let dataTask = sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error) in
        var jsonError : NSError?
        let jsonBlob = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableLeaves, error: &jsonError)
        println(jsonBlob)
        });

    dataTask.resume()
Run Code Online (Sandbox Code Playgroud)

所以这是我的问题.如何使这个completionHandler块能够返回类型为"AnyObject!"的jsonBlob?如果我稍微修改代码如下:

let sesh = NSURLSession.sharedSession()
    let dataTask = sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error) -> AnyObject! in
        var jsonError : NSError?
        let jsonBlob : AnyObject! = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableLeaves, error: &jsonError)
        return jsonBlob
        });

    dataTask.resume()
Run Code Online (Sandbox Code Playgroud)

然后程序将不会编译为对dataTaskWithRequest的调用:completionHandler给出编译器警告说:

 Could not find an overload for 'dataTaskWithRequest' that accepts the supplied arguments
Run Code Online (Sandbox Code Playgroud)

我不明白这一点.我正在使用正确的语法来返回闭包,如Swift …

closures swift

23
推荐指数
1
解决办法
3万
查看次数

如何在swift中使用NSURLConnection completionHandler

有人知道处理程序(块)如何在swift中工作吗?我正在尝试运行此代码,但我找不到完成正确语法的任何文档.

let url:NSURL = NSURL(string:"some url")
let request:NSURLRequest = NSURLRequest(URL:url)
let queue:NSOperationQueue = NSOperationQueue()

NSURLConnection.sendAsynchronousRequest(request:request, queue:queue, completionHandler handler:((NSURLResponse!, NSData!, NSError!) -> Void)!)
Run Code Online (Sandbox Code Playgroud)

block nsurlconnection swift

17
推荐指数
1
解决办法
2万
查看次数

标签 统计

swift ×2

block ×1

closures ×1

nsurlconnection ×1