想要將小量資料儲存在本機端,下次打開 App 就能取回,可以使用 UserDefaults。
下方程式碼,讓我們來展示,每點擊一次就將數值+2。
// Theme: UserDefaults
// IDE: Xcode 13.3.1
// OS: iOS 15
// Date: 2022-05-03
// Author: HappyMan
import SwiftUI
struct UserDefaultView: View {
@State private var tapCount = UserDefaults.standard.integer(forKey: "Tap")
var body: some View {
VStack(alignment: .leading, spacing: nil, content: {
Button {
self.tapCount += 2
UserDefaults.standard.set(self.tapCount, forKey: "Tap")
} label: {
Text("Tap count: \(tapCount)")
}
})
}
}
struct UserDefaultView_Previews: PreviewProvider {
static var previews: some View {
UserDefaultView()
}
}
事實上,SwiftUI 有提供新的語法:@AppStorage。不過目前支援的儲存型態有限,像是目前不支援 Array 和 Dictionary。
使用新語法 @AppStorage,會有更簡潔的寫法,因為它隱藏 UserDefaults 的取值步驟。減少一行程式碼確實不錯,不過妳要懂的被隱藏的步驟喔~
範例程式碼如下,這次點擊一次+1:
// Theme: UserDefaults
// IDE: Xcode 13.3.1
// OS: iOS 15
// Date: 2022-05-03
// Author: HappyMan
import SwiftUI
struct UserDefaultView: View {
@AppStorage("tapCount") private var tapCount = 0
var body: some View {
VStack(alignment: .leading, spacing: nil, content: {
Button {
tapCount += 1
} label: {
Text("Tap count: \(tapCount)")
}
})
}
}
struct UserDefaultView_Previews: PreviewProvider {
static var previews: some View {
UserDefaultView()
}
}
隨意留個言吧:)~