小编svc*_*cho的帖子

将 @AppStoarge 与自定义对象数组一起使用不会保留数据

我对 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)

class swift swiftui appstorage

3
推荐指数
1
解决办法
3119
查看次数

标签 统计

appstorage ×1

class ×1

swift ×1

swiftui ×1