Swift4: новая проблема с кодируемым протоколом - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь использовать новый протокол 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))

Я сделал этот пример на основе этого учебника , но кажется, что-то не так с этими реализациями Возвращенный JSON выглядит так:

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

1 Ответ

0 голосов
/ 16 мая 2018

Вы должны удалить значения по умолчанию из констант:

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

Константы не могут быть переназначены.После того, как вы дадите им значение по умолчанию, они не могут быть снова назначены во время синтаксического анализа.

...