我试图在XCode 6.3中使用AlamoFire和Swift 1.2.我已经解决了大部分问题(即改变为!)但我有一个我无法弄清楚的问题.
以下代码 - 以及类似的代码片段 - 在第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)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我还得到了以下工作:
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)
}
})
Run Code Online (Sandbox Code Playgroud)
即通过显式声明闭包的参数名称而不是让它在方法paranthesis后跟踪.似乎新编译器在识别方法时存在问题.
将尾随闭包分离到其自己的变量中,然后调用 resonseJSON(closure) 可以解决问题,但我不确定为什么。有人有理由吗?这是工作代码:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2917 次 |
最近记录: |