“让JSON”如何在Alamofire / Swift中运行

时间:2015-12-30 19:40:10

标签: json swift enums closures alamofire

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)")
}

1 个答案:

答案 0 :(得分:2)

案例result.Success

.Failure。 Swift中的Enum案例可以保留一些值(顺便说一句,这就是Swift中的Optionals如何工作,它们是两个案例的枚举:Some包含一个值而None)。通过在switch中调用case .Success(let JSON):,您可以将此值分配给JSON常量,并且可以在case块中使用它。自动推断此常量的类型。

有关它的更多信息,请查看Swift Language Guide

中的“关联值”一节