Сохранение кодируемой структуры в Userdefaults возвращает нулевые значения при выборке - PullRequest
0 голосов
/ 09 июля 2020

Сохранение данных по умолчанию:

let encoder = JSONEncoder()
if let encoded = try? encoder.encode(user) {
    let defaults = UserDefaults.standard
    defaults.set(encoded, forKey: DefaultKeys.user)
    defaults.synchronize()
}

выборка данных, но получение нулевых ключей структуры.

let defaults = UserDefaults.standard
if let savedPerson = defaults.object(forKey: DefaultKeys.user) as? Data {
    let decoder = JSONDecoder()
    if let loadedPerson = try? decoder.decode(UserModel.self, from: savedPerson) {
        return loadedPerson
    }
}

Я попытался использовать Google подходы, которые все предлагают то же самое для сохранения настраиваемого объекта в userdefaults , но этот подход у меня не работает. Ниже приведена моя модель структуры, которая также соответствует Codable .

struct UserModel : Codable {

var userDetails : UserDetail?
var status : Bool?
var message : String?

enum CodingKeys: String, CodingKey {
    case userDetails = "userDetails"
    case status = "status"
    case message = "message"
}

init(from decoder: Decoder) throws {
    let values = try decoder.container(keyedBy: CodingKeys.self)
    userDetails = try UserDetail(from: decoder)
    status = try values.decodeIfPresent(Bool.self, forKey: .status)
    message = try values.decodeIfPresent(String.self, forKey: .message)
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...