我对 SwiftUI 相当陌生,想要使用 @AppStorage 属性包装器以数组的形式保存自定义类对象的列表。我在这里找到了几篇文章,帮助我创建了以下通用扩展,我已将其添加到我的 AppDelegate 中:
extension Published where Value: Codable {
init(wrappedValue defaultValue: Value, _ key: String, store: UserDefaults? = nil) {
let _store: UserDefaults = store ?? .standard
if
let data = _store.data(forKey: key),
let value = try? JSONDecoder().decode(Value.self, from: data) {
self.init(initialValue: value)
} else {
self.init(initialValue: defaultValue)
}
projectedValue
.sink { newValue in
let data = try? JSONEncoder().encode(newValue)
_store.set(data, forKey: key)
}
.store(in: &cancellableSet)
}
}
Run Code Online (Sandbox Code Playgroud)
这是我代表该对象的类:
class Card: ObservableObject, Identifiable, Codable{
let id : …Run Code Online (Sandbox Code Playgroud)