Swift Notları — 2 User Defaults

Çağatay Yıldız
BilgeAdam Teknoloji
3 min readDec 6, 2021

Birçok programlama dilinde olduğu gibi Swift dilinde de kimi verilerimizi kullanıcı tarafında saklamamız mümkün. Nasıl web sayfalarımızda localStorage çalıştırıyorsak Swift dilinde de UserDefaults yapısı ile kimi değerlerimizi kullanıcı telefonunda tutabiliriz.

UserDefaults üzerinden bir veri tutmak istediğimizde key,value mantığıyla tutuyoruz. Tutacağımız değerin bir anahtarı ve değerin kendisi bir bütün oluşturmakta.

Değer Set Etme

Örneğin aşağıdaki kod bloğunda “loginStatus” keywordüne sahip bir değeri (true) depoladık. UserDefaults classı içerisindeki set metodunu kullanarak bu işlemi gerçekleştirdik.

Dilerseniz Foundation içerisinden set metodunu inleceleyebilirsiniz. set metodunda value Any tipinde. Yani dilediğiniz tipi kullanıcıda saklamanız mümkün. Boolean, Int, String, Array ve obje gibi bir çok tipi saklayabilirsiniz.

Değer Okuma

Yazdığınız herhangi bir değeri okumak için de aynı sınıfı kullanıyoruz. Burada dikkat etmemiz gereken nokta değerimizin tipini de önceden belirtmemiz. Aşağıdaki kod bloğunda bool değer sakladığımız için get ederken bunu belirtiyoruz.

UserDefaults İçerisinde Obje Saklama

Kullanıcıda obje de saklayabiliriz. Burada Swift dili objeyi direkt saklamak yerine JSON olarak objeyi encode edip aynı şekilde JSON olarak decode etmemizi ve öyle saklamamızı öneriyor. ( Başka çözümler de mevcut.) Örneğin aşağıda bulunan fonksiyon UserInformation tipindeki objeyi JSON encode edip saklamakta.

UserInformation Structı ( JSON encode etmek istediğiniz Structı Codable olarak yazmamız gerekli )

UserDefaults İçerisinden Obje Okuma

Yazdığımız objeyi aşağıdaki gibi okumamız mümkün. Objemizi tekrar kullanmak için Decode ediyoruz.

Böylelikle istediğimiz tipteki değeri kullanıcı özelinde sakladık. Uygulama açılışında kullanıcının tekrar login olmaması, sepetteki ürünlerinin kaybolmaması gibi bir çok işlemde UserDefaults yapısını kullanabiliriz.

Bir sonraki Swift notunda görüşmek üzere :)

Kaynaklar

--

--