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