Ios 无法调用非函数类型的值';JSON';,如何在Swift中从块返回值

Ios 无法调用非函数类型的值';JSON';,如何在Swift中从块返回值,ios,json,swift,Ios,Json,Swift,我有一个功能: func connectToWS(callback: (JSON)) -> Void { let urlPath: String = "http://xxx.webservice.com" let url: NSURL = NSURL(string: urlPath)! let request: NSURLRequest = NSURLRequest(URL: url) let session = NSURLSession.sharedSe

我有一个功能:

func connectToWS(callback: (JSON)) -> Void {
    let urlPath: String = "http://xxx.webservice.com"
    let url: NSURL = NSURL(string: urlPath)!
    let request: NSURLRequest = NSURLRequest(URL: url)

    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithRequest(request){
        (data, response, error) -> Void in
        if error != nil {

        } else {
            let json:JSON = JSON(data: data!)
            // RETURN?
        }
    }
    task.resume()
}
我所要做的就是在调用此函数时返回NSDictionary JSON序列化字典。但我似乎不能,因为我的json数据在dataTaskWithRequest块中。我已尝试使用回拨,但显示错误:

Cannot call value of non-function type 'JSON'
有人能告诉我解决这个问题的方向吗

我正在使用SwiftyJSON作为第三方库

试试这个:

func connectToWS(callBack: ((data: NSData!, response: NSURLResponse!, error: NSError!) -> Void)?) {
    let urlPath: String = "http://xxx.webservice.com"
    let url: NSURL = NSURL(string: urlPath)!
    let request: NSURLRequest = NSURLRequest(URL: url)
    let session = NSURLSession.sharedSession()

    let task = session.dataTaskWithRequest(request) { data, response, error in
        callBack?(data: data, response: response, error: error)
        return
    }

    task.resume()
}
那么就这样称呼它:

connectToWS() { data, response, error in
    if error != nil {
        if error.domain == NSURLErrorDomain && error.code == NSURLErrorTimedOut {
            print("timed out") // note, `response` is likely `nil` if it timed out
        }
    }
}

谢谢你的帮助。最后一个问题:connectToWS(){data,response error in}是块吗?是的。更准确地说,这是一个
结尾。如果
closure
是该函数的唯一参数,则可以这样编写它。