Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AlamoFire与Swift 1.2:使用';回应';_Alamofire_Swift - Fatal编程技术网

AlamoFire与Swift 1.2:使用';回应';

AlamoFire与Swift 1.2:使用';回应';,alamofire,swift,Alamofire,Swift,我正试图在XCode 6.3中将AlamoFire与Swift 1.2结合使用。我已经解决了大部分问题(例如,更改为as!),但我有一个问题无法解决 下面的代码(以及类似的代码片段)在第5行(“req.responseJSON(){”)处生成一个编译时错误,并显示消息“不明确地使用'responseJSON'”。我需要在AlamoFire库中更改什么或修改代码来修复它?注意:我按照文档中的描述导入了该项目,它在Swift 1.1和XCode 6.1.1中工作得非常出色 func theaters

我正试图在XCode 6.3中将AlamoFire与Swift 1.2结合使用。我已经解决了大部分问题(例如,更改为as!),但我有一个问题无法解决

下面的代码(以及类似的代码片段)在第5行(“req.responseJSON(){”)处生成一个编译时错误,并显示消息“不明确地使用'responseJSON'”。我需要在AlamoFire库中更改什么或修改代码来修复它?注意:我按照文档中的描述导入了该项目,它在Swift 1.1和XCode 6.1.1中工作得非常出色

func theaters(delegate:GlobalNetworkingDelegate){
    if let url = self.mainNetworkingUrl{
        var urlToUse = url + "theaters"
        var req:Request = Alamofire.request(.GET, urlToUse, parameters: [:], encoding: .URL)
            req.responseJSON(){
            (req, response, jsonOut, error) in

            if(response.statusCode == 200 && error == nil){
                var ajson = JSON(jsonOut!)
                delegate.globalTheatersOutomce!(true, json: jsonOut, error: error)
            }

        }
    }
}

将尾部闭包分离为自己的变量,然后调用resonseJSON(闭包)解决了问题,但我不知道为什么。有人有理由吗?下面是工作代码:

func theaters(delegate:GlobalNetworkingDelegate){
    if let url = self.mainNetworkingUrl{
        var urlToUse = url + "theaters"

        var req:Request = Alamofire.request(.GET, urlToUse, parameters: [:], encoding: .URL)

        var aClosure = {(req:NSURLRequest, response:NSHTTPURLResponse?, jsonOut:AnyObject?, error:NSError?) -> Void in

            if(response!.statusCode == 200 && error == nil){
                var ajson = JSON(jsonOut!)
                delegate.globalTheatersOutomce!(true, json: jsonOut, error: error)
            }

        }

        req.responseJSON(aClosure)


        }
}

我还完成了以下工作:

    Alamofire.manager.request(.PUT, pathWithId(user.key), parameters: user.toDict(), encoding: .JSON)
    .responseString( completionHandler: {
        (request: NSURLRequest, response: NSHTTPURLResponse?, responseBody: String?, error: NSError?) -> Void in
            if responseBody == "OK" {
                completion(user, nil)
            } else {
                completion(nil, error)
            }
    })

i、 e.通过显式声明闭包的参数名,而不是让它在方法结束后跟踪。似乎新编译器在识别其他方法时有问题。

如果将闭包包装为()它不是拖在后面,而是同样有效。它的工作原理与这里的其他答案相同,只是另一种书写方式

func theaters(delegate:GlobalNetworkingDelegate){
if let url = self.mainNetworkingUrl {
    var urlToUse = url + "theaters"
    var req:Request = Alamofire.request(.GET, urlToUse, parameters: [:], encoding: .URL)
        req.responseJSON({
        (req, response, jsonOut, error) in

        if(response.statusCode == 200 && error == nil){
            var ajson = JSON(jsonOut!)
            delegate.globalTheatersOutomce!(true, json: jsonOut, error: error)
        }

    })
  }
}

我遇到了同样的问题。将您的Alamofire更新到最新版本(我写答案时为1.2.2)为我解决了问题。

出于某种原因,分离尾随闭包解决了问题。不知道为什么。有人吗?用Alamofire解决了同样的问题,奇怪……有什么合乎逻辑的解释吗?