61
задан 19 September 2019 в 13:50

1 ответ

В Быстрых 4:

можно использовать Codable, чтобы сохранить и получить пользовательский объект от Userdefault. При выполнении его часто затем, можно добавить как расширение и использовать его как ниже.

extension UserDefaults {

   func save<T:Encodable>(customObject object: T, inKey key: String) {
       let encoder = JSONEncoder()
       if let encoded = try? encoder.encode(object) {
           self.set(encoded, forKey: key)
       }
   }

   func retrieve<T:Decodable>(object type:T.Type, fromKey key: String) -> T? {
       if let data = self.data(forKey: key) {
           let decoder = JSONDecoder()
           if let object = try? decoder.decode(type, from: data) {
               return object
           }else {
               print("Couldnt decode object")
               return nil
           }
       }else {
           print("Couldnt find key")
           return nil
       }
   }

}

Ваш Класс должен следовать за Codable. Его просто typealias для обоих Encodable & Протокол Decodable.

class UpdateProfile: Codable {
  //Your stuffs
}

Использование:

let updateProfile = UpdateProfile()

//To save the object
UserDefaults.standard.save(customObject: updateProfile, inKey: "YourKey")

//To retrieve the saved object
let obj = UserDefaults.standard.retrieve(object: UpdateProfile.self, fromKey: "YourKey")

Для большего количества Кодирования и Декодирования Пользовательских типов, пройдите документация Apple .

6
ответ дан 31 October 2019 в 15:13

Другие вопросы по тегам:

Похожие вопросы: