Published on

Nima uchun persistenslik muhim

Authors

Har qanday ilovani birinchi o'zi yozgan dasturchi bir kundayoq qo'rqinchli muammo bilan to'qnashadi: ilova yopilganda barcha ma'lumot yo'q bo'lib ketadi.

Ro'yxatga element qo'shasiz — yopdingiz, ochdingiz — bo'sh ro'yxat. Sozlamani o'zgartirdingiz — yopdingiz, ochdingiz — yana standart qiymat. Foydalanuvchi shikoyat qiladi: "Ilova hamma narsani unutdi."

Muammo nima? @State faqat xotirada (RAM da) saqlaydi. Ilova yopilganda jarayon tugaydi va xotira tozalanadi. Keyingi ochilishda hamma narsa yangilanadi.

Xotira holat va doimiy ma'lumot

Xususiyat@State (xotirada)Doimiy ma'lumot
Ilova yopilgandaYo'qoladiQurilmada saqlanib qoladi
TezlikDarhol — shunchaki RAM o'qishBiroz sekinroq — disk o'qish
Uchun yaxshiUI holati: qaysi tab tanlangan, sheet ochiqmiFoydalanuvchi ma'lumoti: sozlamalar, yozuvlar
Yo'qolsa riskiPast — UI qayta tiklanadiYuqori — foydalanuvchi ishi yo'qoladi

Asosiy qoida: Foydalanuvchi yo'qolishidan xafa bo'ladigan har qanday ma'lumot doimiy saqlanishi kerak.

iOS da persistenslikning uch vositasi

// 1. @AppStorage — oddiy sozlamalar uchun
// UserDefaults ga yozadi, @State kabi ishlaydi
@AppStorage("isDarkMode") var isDarkMode: Bool = false

// 2. Fayl saqlash — hujjatlar va eksport uchun
// Ilovaning shaxsiy papkasiga yozadi
func eslatmaSaqlash(_ matn: String) {
    let url = FileManager.default
    .urls(for: .documentDirectory, in: .userDomainMask)[0]
    .appendingPathComponent("eslatma.txt")
    try? matn.write(to: url, atomically: true, encoding: .utf8)
}

// 3. SwiftData — tuzilgan yozuvlar to'plami uchun
// Ma'lumotlar bazasiga yozadi, filtrlash va saralash mumkin
@Model class Vazifa {
    var sarlavha: String
    var bajarildi: Bool
    init(sarlavha: String) {
        self.sarlavha = sarlavha
        self.bajarildi = false
    }
}

Vosita tanlash qo'llanmasi

HolatTo'g'ri vosita
Dark mode toggle@AppStorage — bitta Bool sozlama
Foydalanuvchi ismi@AppStorage — bitta String qiymat
200 ta jurnal yozuviSwiftData — filtrlash kerak bo'lgan to'plam
JSON faylni ulashishFayl saqlash — foydalanuvchi ko'radigan hujjat
Sevimlilari ro'yxatiSwiftData — tuzilgan yozuvlar to'plami
Shrift o'lchami sozlamasi@AppStorage — bitta Int qiymat

Tezkor ma'lumotnoma

VositaEng mosEmas
@AppStorageSozlamalar, oddiy bayroqlarKatta massivlar, tuzilgan ma'lumot
Fayl saqlashHujjatlar, eksport, keshFiltrlash, saralash kerak bo'lsa
SwiftDataYozuvlar to'plamiBitta Bool/String sozlama

🎯 Topshiriq: persistenslik tahlili

Telefoningizdagi ikki ilovani o'ylab ko'ring. Har biri uchun: agar faqat @State ishlatilsa qanday ma'lumot yo'qoladi? Uchta vositadan (@AppStorage, fayl, SwiftData) qaysi biri mos keladi? Kod yozish shart emas — faqat fikrlash.

Buy mea coffee