AppStorage va SceneStorage


ULASHISH

SwiftUI AppStorage va SceneStorage

Kichik qiymatlarni @AppStorage bilan, har bir sahna (scene) uchun view holatini esa @SceneStorage bilan saqlang.


@AppStorage (User Defaults)

O‘zgarishlar ilova qayta ishga tushirilganda ham saqlanib qolishi uchun qiymatni to‘g‘ridan-to‘g‘ri UserDefaults ga bog‘lang.

Sintaksis: @AppStorage("key") var value: T = default

Misol

import SwiftUI

struct AppStorageDemo: View {
  @AppStorage("username") private var username = ""
  var body: some View {
    VStack(spacing: 12) {
      Text("Hello, \(username.isEmpty ? "Guest" : username)")
      TextField("Username", text: $username)
        .textFieldStyle(.roundedBorder)
    }
    .padding()
  }
}
import SwiftUI

struct ContentView: View {
  var body: some View { AppStorageDemo() }
}
import SwiftUI

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup { ContentView() }
  }
}

Misolni ishga tushirish »

Ushbu misol foydalanuvchi nomini UserDefaults da saqlaydi va UI’ni sinxron holda ushlab turadi.



@SceneStorage (har bir sahna uchun UI holati)

Vaqtinchalik UI ma’lumotlarini (masalan, qoralamani) har bir oyna/sahna uchun saqlang; sahna qaytganda holat tiklanadi.

Sintaksis: @SceneStorage("key") var value: T

Misol

import SwiftUI

struct SceneStorageDemo: View {
  @SceneStorage("draft_note") private var draft = ""
  var body: some View {
    VStack(alignment: .leading, spacing: 8) {
      Text("Draft:")
      TextEditor(text: $draft)
        .frame(minHeight: 120)
        .overlay(RoundedRectangle(cornerRadius: 6).stroke(.secondary))
    }
    .padding()
  }
}
import SwiftUI

struct ContentView: View {
  var body: some View { SceneStorageDemo() }
}
import SwiftUI

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup { ContentView() }
  }
}

Misolni ishga tushirish »

Ushbu misol har bir sahna uchun matn qoralamasini saqlaydi, shuning uchun oynalar almashtirilganda kontent har birida mustaqil saqlanib qoladi.

Maslahat: Sozlamalar uchun @AppStorage dan, vaqtinchalik UI holati uchun esa @SceneStorage dan foydalaning.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!