ios - 如何将我的 [Response] 模型保存到 UserDefault 以进行离线持久性?
问题描述
我希望能够保留我的数据模型以供离线使用。我正在使用一个看起来像这样的结构:
public struct Response: Codable {
var id: String
var title: String
var message: String
var user: User
}
是否可以将整个 Response 对象存储到 UserDefaults 中?即使离线,我也想显示这些数据。我正在使用带有一个名为 responseObject 的 State var 的 SwiftUI,它将对 UI 上的更改做出反应。我创建了一个列表并遍历了 responseObject 中的项目:
@State private var responseObject = [Response]()
List(self.responseObject, id: \.id) { item in
HStack {
Spacer()
VStack {
URLImage(url: item.message)
.frame(width: 240, height: 240)
.aspectRatio(contentMode: .fit)
.cornerRadius(10)
Text(item.title)
.font(.headline)
.multilineTextAlignment(.center)
.foregroundColor(Color(UIColor.white))
.padding(.horizontal, 8)
Text(item.user.name)
.font(.subheadline)
.multilineTextAlignment(.center)
.foregroundColor(Color(UIColor.white))
.padding(.horizontal, 8)
}
Spacer()
}
}
我正在尝试将 json 中的 decodedResponse 存储到 UserDefault 中,例如:
UserDefaults.standard.set(decodedResponse.stories, forKey: "responseData")
然后如果离线,更新 responseObject 状态变量,如
self.responseObject = defaults.object(forKey: "responseData") as! [Response]
离线时会崩溃。认为我可能错误地使用了默认值。想要避免像 CoreData 这样过于复杂的东西.....
还是有更“SwiftUI”的方式来实现这一点?
任何信息将不胜感激!谢谢!
解决方案
推荐阅读
- python - Python:如何使用鼠标和键盘事件查看 pdf 并在其上创建注释?
- c++ - 如何在二进制数的开头添加零
- linux - 另一个 postgres 未启动:“无法映射匿名共享内存”
- android - 如何使用 where 通过 DocumentReference 删除文档?安卓工作室
- pyspark - 输入与进程行在 pyspark 流编写器中显示为 0?
- c++ - PCL中的computeFeature函数在哪里修改?
- javascript - 如何在反应原生 iOS 模块中访问 AppDelegate 方法
- javascript - 如何将 bootsrap 中的 card-title 设置为来自文本区域的输入
- angular - 在 1 个发射中从父可观察数组中提取嵌套数组
- entity-framework - 实体框架核心 Blazor WASM