Codable struct modellerini UserDefaults’a kaydetme nasıl yapılır?

Emre Oner
Appcent
Published in
Jan 5, 2021

Merhaba,

Bildiğiniz üzere Codable modellerinizi normalde UserDefaults’a kaydedemiyoruz. UserDefaults’un kabul ettiği belli tipler(int, bool, string, data) var.

Userdefaults’a bunu nasıl kabul ettireceğimize bir göz atalım;

  • Öncelikle örnek olması açısından Person isimli bir struct oluşturuyorum ve tabiki “Codable” olmasına dikkat ediyorum ve ardından “emre” isimli constant’ımı oluşturuyorum.
  • Ardından global bir defaults variable oluşturuyorum.
  • “emre” ismindeki constant’ımı JSONEncoder ile encode ettikten sonra Data olarak kaydediyorum. Artık bunu UserDefaults’a kaydedemem için hiçbir sebep yok.
  • Şimdi data olarak kaydettiğim constant’ımı kullanabilirim. Bunun için 18. satırda gördüğünüz gibi kaydettiğim “key” optional olacağı için “if let” ile çağırıp daha sonrasında JSONDecoder ile decode edip ne yapacağınıza karar verebilirsiniz.

Fark ettiyseniz encoder ve decoder’ı try? şeklinde kullandım. Ancak uygulamanızda “do — catch” bloğunu kullanırsanız hem daha güvenli hem de hata yakalamanız daha kolay olacaktır.

Örnek kod bloğu

Herkese sağlıklı günler diliyorum.

--

--