从here我看到处理JSON响应时正确的Alamofire 2 / Swift 2语法是:
Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
.responseJSON { request, response, result in
switch result {
case .Success(let JSON):
print("Success with JSON: \(JSON)")
case .Failure(let data, let error):
print("Request failed with error: \(error)")
if let data = data {
print("Response data: \(NSString(data: data, encoding: NSUTF8StringEncoding)!)")
}
}
}
let JSON
定义的方式和位置? (从斯威夫特的角度来看。)
我在请求扩展中看到ResponseSerializer
返回.Success(JSON)
,但为什么处理程序没有像普通函数那样定义:
case .Success(JSON: AnyObject?) {
print("Success with JSON: \(JSON)")
}
或更好:
case .Success(JSON: NSDictionary?) {
print("Success with NSDictionary: \(JSON)")
}
答案 0 :(得分:2)
result
,.Success
是 .Failure
。 Swift中的Enum案例可以保留一些值(顺便说一句,这就是Swift中的Optionals如何工作,它们是两个案例的枚举:Some包含一个值而None)。通过在switch中调用case .Success(let JSON):
,您可以将此值分配给JSON
常量,并且可以在case块中使用它。自动推断此常量的类型。
有关它的更多信息,请查看Swift Language Guide
中的“关联值”一节