- Published on
Qaysi vositani qachon ishlatish
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Uchta persistenslik vositasi endi qo'lingizda. Eng keng tarqalgan chalkashlik β ularni qanday ishlatishni bilish emas, balki qaysi birini tanlash. Noto'g'ri vositani tanlash keyinchalik tuzatish uchun noqulay muammolar yaratadi.
Qisqa versiya: @AppStorage sozlamalar uchun, fayllar hujjatlar va eksport uchun, SwiftData tuzilgan yozuvlar to'plami uchun. Har birining o'z joyi bor va ular orasidagi qoplanma ko'rinadiganidan kichik.
Tomon qiyoslash
| Xususiyat | @AppStorage | Fayl saqlash | SwiftData |
|---|---|---|---|
| Eng mos | Foydalanuvchi sozlamalari | Hujjatlar, eksport | Tuzilgan yozuvlar to'plami |
| Ma'lumot turi | Bool, String, Int, Double | String, Data, Codable | Har qanday @Model sinf |
| Filtrlash | Yo'q | Yo'q β hammani yuklaydi | Ha β @Query predikat bilan |
| SwiftUI reaktivligi | Ha β @State kabi | Yo'q β qo'lda boshqarish | Ha β @Query jonli yangilanadi |
| iOS versiyasi | iOS 14+ | Istalgan | iOS 17+ |
| Sozlash | Yo'q | Minimal | @Model + .modelContainer |
Keng tarqalgan xatolar
// β @AppStorage ni noto'g'ri ishlatish
// Butun massivni bitta kalit ostida JSON encode qilish
@AppStorage("vazifalar") var vazifalarJSON: String = "[]"
// Shuni ko'rsangiz β to'xtang. Bu SwiftData ishi.
// β
To'g'ri yondashuv
@Query var vazifalar: [VazifaElement]
// β Har narsa uchun fayl saqlash
// Filtrlash kerak bo'lganda hamma narsani xotiraga yuklash
let yozuvlar = yozuvlarniYukla()
let bugungilar = yozuvlar.filter { Calendar.current.isDateInToday($0.sana) }
// β
SwiftData filtrlashni ma'lumot bazasida bajaradi
@Query(filter: #Predicate<JurnalYozuvi> { Calendar.current.isDateInToday($0.sana) })
var bugungilar: [JurnalYozuvi]
// β SwiftData ni oddiy sozlama uchun ishlatish
@Model class IlovaSozlamalari {
var qorongRejimda: Bool = false
}
// Bitta Bool uchun ortiqcha murakkablik
// β
@AppStorage to'g'ri tanlov
@AppStorage("qorongRejimda") var qorongRejimda: Bool = false
Haqiqiy stsenariylar β qaror qo'llanmasi
| Stsenariy | To'g'ri vosita | Sabab |
|---|---|---|
| Onboarding ko'rilganmi | @AppStorage | Bitta Bool bayroq β sozlamalar uchun |
| 200 ta jurnal yozuvi | SwiftData | Filtrlash va saralash kerak bo'lgan to'plam |
| Ulashish uchun JSON eksporti | Fayl saqlash | Foydalanuvchi ko'rmoqchi bo'lgan hujjat |
| Foydalanuvchi tanlagan aksent rang | @AppStorage | Bitta sozlama β so'rov kerak emas |
| Yuzlab element, sana va teglar | SwiftData | Filtrlash talabi bor murakkab ma'lumot |
| Yuklab olingan markdown maqolasi | Fayl saqlash | Hujjat β bitta fayl, so'rov kerak emas |
Bir jumlada qaror qoidasi
- Sozlama bo'lsa β
@AppStorage - Foydalanuvchi ulashishi mumkin bo'lsa β fayl saqlash
- Ilova boshqaradigan yozuvlar ro'yxati bo'lsa β SwiftData
Tezkor ma'lumotnoma
| Vosita | Qachon | Emas |
|---|---|---|
@AppStorage | Sodda sozlamalar bayroqlari | Massivlar, tuzilgan ma'lumot |
| Fayl saqlash | Hujjatlar, eksport, lokal kesh | Filtrlash, saralash kerak |
| SwiftData | Tuzilgan yozuvlar to'plami | Bitta Bool/String sozlama |
π― Topshiriq: o'z ilovangizni tekshiring
O'zingiz o'ylagan ilova g'oyasini yoki shu kursda yaratgan narsangizni ko'rib chiqing. Qayta yuklanishda saqlanishi kerak bo'lgan har bir ma'lumot uchun qaysi vositani ishlatishingizni hal qiling. Har bir qaror uchun qisqacha sabab yozing. Keyin ro'yxatdagi bir ma'lumotni to'g'ri vosita bilan amalga oshiring va ilova yopib-ochib ma'lumot saqlanganini tasdiqlang.