- Published on
@AppStorage bilan foydalanuvchi sozlamalari
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
@AppStorage β SwiftUI da UserDefaults ni o'qish va yozishning eng tabiiy usuli. UserDefaults ni iOS ilovangiz uchun saqlaydigan kichik daftar sifatida tasavvur qiling: kalitga qiymat yozasiz, ilova yopilsa ham u shu yerda qoladi.
@AppStorage ning eng yaxshi tomoni β @State ga o'xshashligi. Xususiyat e'lon qilasiz, o'qiysiz, yozasiz va SwiftUI qiymat o'zgarganda ko'rinishni avtomatik yangilaydi. Farqi: qiymat diskda, RAMda emas.
| Qator | Vazifasi |
|---|---|
@AppStorage("isDarkMode") var isDarkMode: Bool = false | "isDarkMode" kalit ostida UserDefaults ga bog'langan xususiyat. false β faqat birinchi marta, UserDefaults da qiymat yo'q bo'lsa ishlatiladi. |
Toggle("...", isOn: $isDarkMode) | Toggle ni @AppStorage ga bevosita bog'laydi. Foydalanuvchi ulaganda qiymat darhol UserDefaults ga yoziladi. |
.preferredColorScheme(isDarkMode ? .dark : .light) | isDarkMode ni o'qib ko'rinish uchun rejim o'rnatadi. @AppStorage @State kabi ishlaydi β qiymat o'zgarganda ko'rinish qayta renderlanadi. |
@AppStorage patternlari
// Bool β onboarding yoki bayroqlar uchun
@AppStorage("hasCompletedOnboarding") var hasCompletedOnboarding: Bool = false
Button("Boshlash") {
hasCompletedOnboarding = true // Darhol UserDefaults ga yoziladi
}
// String β ism yoki mavzu nomi uchun
@AppStorage("displayName") var displayName: String = ""
if !displayName.isEmpty {
Text("Xush kelibsiz, \(displayName)!")
}
// Enum β RawRepresentable bo'lishi shart
enum IlovaRejimi: String {
case yorug, qorong, tizim
}
@AppStorage("rejim") var rejim: IlovaRejimi = .tizim
// Xom String qiymati ("yorug", "qorong", "tizim") UserDefaults ga yoziladi
@AppStorage nima uchun emas
UserDefaults kichik, oddiy qiymatlar uchun mo'ljallangan. Bu narsalarni saqlamang:
// β Yomon β massivni @AppStorage da saqlashga urinish
@AppStorage("tasks") var tasksJSON: String = "[]"
// JSON encode/decode qo'lda qilish kerak β og'ir va xato qilishi mumkin
// β
To'g'ri β SwiftData to'plamlar uchun yaratilgan
@Query var tasks: [Task]
Qoida: Sozlamalar ekranida ko'rsatadigan narsa bo'lsa β @AppStorage to'g'ri tanlov. Yozuvlar ro'yxati bo'lsa β SwiftData.
Tezkor ma'lumotnoma
| Sintaksis | Vazifasi |
|---|---|
@AppStorage("kalit") var x: Bool = false | Bool ni UserDefaults ga saqlaydi |
@AppStorage("kalit") var x: String = "" | String ni saqlaydi β bo'sh satr standart |
@AppStorage("kalit") var x: Int = 0 | Int ni saqlaydi |
@AppStorage("kalit") var x: Double = 0.0 | Double ni saqlaydi |
$x binding da | @State kabi β kontrolga bevosita bog'lash |
x = yangiQiymat | UserDefaults ga darhol yozadi, ko'rinishni yangilaydi |
π― Topshiriq: doimiy sozlamalar ekrani
Kamida uchta @AppStorage xususiyati bilan sozlamalar ekrani yarating: Bool toggle, String text field va Int stepper. Saqlangan qiymatlarni alohida viewda ko'rsating. Simulyatorda ilovani to'liq yoping (Device > Restart yoki App Switcher dan), qayta oching va uchala qiymat ham saqlanganligini tasdiqlang.