Just My Life & My Work

[SwiftUI] UserDefaults & AppStorage

想要將小量資料儲存在本機端,下次打開 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()
    }
}

參考:Storing user settings with UserDefaults

廣告

隨意留個言吧:)~

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

標籤雲

%d 位部落客按了讚: