UserDefaults vs AppStorage

“UserDefaults” ve “AppStorage”, iOS ve macOS platformlarında, uygulama geliştiricilerin veri depolamak için kullandığı iki farklı yöntemdir.

  1. UserDefaults: Küçük boyutlu verileri anahtar-değer çiftleri olarak depolamak için kullanılan bir veri saklama mekanizmasıdır. Bu veri depolama mekanizması, kullanıcı tercihleri, uygulama ayarları, küçük metin dizeleri veya sayısal veriler gibi basit yapıdaki verilerin tutulması için uygundur. Örneğin, kullanıcının uygulama içinde seçtiği tema rengini veya dil tercihini saklamak için kullanılabilir.
import SwiftUI

struct ContentView: View {
    @State private var counterValue = UserDefaults.standard.integer(forKey: "counterValue") // Sayaç değerini UserDefaults ile alıyoruz

    var body: some View {
        VStack {
            Text("Sayaç Değeri: \(counterValue)")
                .font(.headline)
                .padding()
            
            HStack {
                Button(action: {
                    counterValue -= 1 // Sayaç değerini azaltma
                    UserDefaults.standard.set(counterValue, forKey: "counterValue") // Sayaç değerini UserDefaults'a kaydetme
                }, label: {
                    Image(systemName: "minus.circle")
                })
                
                Button(action: {
                    counterValue += 1 // Sayaç değerini artırma
                    UserDefaults.standard.set(counterValue, forKey: "counterValue") // Sayaç değerini UserDefaults'a kaydetme
                }, label: {
                    Image(systemName: "plus.circle")
                })
            }
            .font(.largeTitle)
        }
    }
}

UserDefaults, “Property List” (plist) adı verilen bir dosya türü olarak fiziksel olarak depolanır. Kullanımı oldukça kolaydır ve temel bir anahtarla değerleri kaydetme ve çekme işlevselliği sağlar. Ancak, büyük miktarda veri depolamak için uygun değildir ve karmaşık veri yapıları için kullanılması önerilmez.

  1. AppStorage: AppStorage, SwiftUI framework’ünde kullanılan bir özelliktir ve SwiftUI ile uyumlu uygulamalarda veri depolamak için kullanılır. Genellikle daha basit senaryolarda UserDefaults ile benzer bir rol oynar, ancak SwiftUI özelliklerini destekler. Bu sayede, SwiftUI’nin dinamik veri bağlama özelliklerinden yararlanarak uygulama arayüzünü veri değişiklikleriyle otomatik olarak güncelleyebilirsiniz.
import SwiftUI

struct ContentView: View {
    @AppStorage("counterValue") var counterValue = 0 // Sayaç değerini AppStorage ile depoluyoruz

    var body: some View {
        VStack {
            Text("Sayaç Değeri: \(counterValue)")
                .font(.headline)
                .padding()
            
            HStack {
                Button(action: {
                    counterValue -= 1 // Sayaç değerini azaltma
                }, label: {
                    Image(systemName: "minus.circle")
                })
                
                Button(action: {
                    counterValue += 1 // Sayaç değerini artırma
                }, label: {
                    Image(systemName: "plus.circle")
                })
            }
            .font(.largeTitle)
        }
    }
}

AppStorage, @AppStorage erişim belirteci (property wrapper) kullanılarak SwiftUI görünümlerinin içine eklenir ve anahtar-değer çiftleri şeklinde verileri depolar. Yani, basit verileri kaydetmek ve görünümleri güncellemek için kullanışlıdır.

Sonuç: UserDefaults daha genel bir veri saklama yöntemi olarak küçük boyutlu verileri saklamak için kullanılabilirken, AppStorage özellikle SwiftUI ile uyumlu uygulamalarda basit verileri depolamak ve görünümleri otomatik olarak güncellemek için kullanılır. Her ikisi de belirli senaryolarda uygun ve etkili bir şekilde kullanılabilir.

Yorum yapın