Ma’lumotlarni saqlash
Ma’lumotlarni saqlash (UserDefaults)
Kichik sozlamalar va parametrlarni UserDefaults yordamida saqlang hamda qiymatlarni App Groups orqali vidjetlarga ulashing.
UserDefaults API
Bayroqlar (flags) yoki oxirgi ishlatilgan qiymatlar kabi kichik sozlamalarni saqlang.
Sintaksis:
UserDefaults.standard.set(_:forKey:).bool(forKey:)- SwiftUI
@AppStorage("key")
Misol
import SwiftUI
struct UserDefaultsDemo: View {
@AppStorage("username") private var username = ""
var body: some View {
VStack(spacing: 12) {
Text(username.isEmpty ? "Hello, Guest" : "Hello, " + username)
TextField("Username", text: $username)
.textFieldStyle(.roundedBorder)
}
.padding()
}
}
import SwiftUI
struct ContentView: View {
var body: some View { UserDefaultsDemo() }
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup { ContentView() }
}
}
UserDefaults API bayroqlar yoki oxirgi ishlatilgan qiymatlar kabi kichik sozlamalar va parametrlarni saqlashning oddiy usulini taqdim etadi.
Maslahat: Kattaroq ma’lumotlar yoki sinxronlash uchun Core Data yoki CloudKit dan foydalaning.
UserDefaults’da maxfiy ma’lumotlarni saqlamang.
App Group umumiy sozlamalari (vidjetdan kirish)
Kichik qiymatlarni ilovangiz va vidjet (yoki kengaytmalar) o‘rtasida App Group suite’i yordamida ulashing.
Sintaksis:
UserDefaults(suiteName: "group.id")shared.set(_:forKey:)shared.integer(forKey:)
Misol
import SwiftUI
import Foundation
struct AppGroupDemo: View {
private let suite = UserDefaults(suiteName: "group.com.example.notes")!
@State private var count: Int = 0
var body: some View {
VStack(spacing: 12) {
Text("Notes count: \(count)")
HStack {
Button("Increment") { count += 1; suite.set(count, forKey: "notesCount") }
Button("Load") { count = suite.integer(forKey: "notesCount") }
Button("Clear") { suite.removeObject(forKey: "notesCount"); count = 0 }
}
}
.task { count = suite.integer(forKey: "notesCount") }
.padding()
}
}
import SwiftUI
struct ContentView: View {
var body: some View { AppGroupDemo() }
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup { ContentView() }
}
}
Misol: qaydlar sonini ilova va vidjet o‘rtasida ulashish.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
