Swift4:新的Codable协议问题

时间:2018-05-16 09:37:42

标签: swift alamofire swift4 codable

我正在尝试在我的应用程序中使用新的Codable协议,但我无法从JSON到我的对象进行对话。我在这里:

struct LoginCodableEntity: Codable {
    let authToken: String? = ""
    let status: String? = ""
    let errorMessage: String? = ""
    let errorCode: Int?


    private enum CodingKeys: String, CodingKey {
        case status
        case errorMessage = "message"
        case authToken = "auth_token"
        case errorCode = "code"
    }
}
Alamofire.request(API.login).responseJSON { (response) in
                do {
                    let decoder = JSONDecoder()
                    let json = try decoder.decode(LoginCodableEntity.self, from: response.data!)
                    print("JSON: \(json)")



             } catch let err {
                    print("Err", err)
                }

            }

我的API响应数据,json var得到对象强制转换,但其中的字段为空:

JSON: LoginCodableEntity(authToken: Optional(""), status: Optional(""), errorMessage: Optional(""), errorCode: Optional(800))

我基于this tutorial制作了这个示例,但这个实现似乎有些不对劲 返回的JSON如下所示:

JSON: Optional({
    code = 910;
    message = "Credentials denied";
    status = error;
})

1 个答案:

答案 0 :(得分:4)

您必须从常量中删除默认值:

let authToken: String?
let status: String?
let errorMessage: String?
let errorCode: Int?

不能重新分配常量。一旦给它们一个默认值,就不能在解析过程中再次分配它们。