次の文を使用して、ログイン認証情報のような重要なアプリデータをUserDefaultsに保存するために使用しました。
UserDefaults.standard.set("[email protected]", forKey: "emailAddress")
_
さて、私はSwiftuiが新しいプロパティラッパーを紹介したことを知ってきました:
@appstorage.
新しい機能がどのように機能するかを誰かが説明してください。
AdditonにPawello22222に答えます。 UserDefaultStorage
として名前を付けたAppStorageの再実装です。
@propertyWrapper
struct UserDefaultStorage<T: Codable> {
private let key: String
private let defaultValue: T
private let userDefaults: UserDefaults
init(key: String, default: T, store: UserDefaults = .standard) {
self.key = key
self.defaultValue = `default`
self.userDefaults = store
}
var wrappedValue: T {
get {
guard let data = userDefaults.data(forKey: key) else {
return defaultValue
}
let value = try? JSONDecoder().decode(T.self, from: data)
return value ?? defaultValue
}
set {
let data = try? JSONEncoder().encode(newValue)
userDefaults.set(data, forKey: key)
}
}
}
_
このラッパーは、/復元**/**/**/**=// o./of overデフォルトを保存できます。また、IOS 13で動作し、IT=/=/= SwiftUI
をインポートする必要があります。
@UserDefaultStorage(key: "myCustomKey", default: 0)
var myValue: Int
_
それはState
として直接使用することはできません