如何解决加载 UserDefault 并循环它们
我有这个结构
struct dispItem: Identifiable,Codable {
let id = UUID()
let name: String
}
我通过这种方式在 UserDefaults 中有:
init() {
if let items = UserDefaults.standard.data(forKey: "dispItems") {
let decoder = JSONDecoder()
if let decoded = try? decoder.decode([dispItem].self,from: items) {
self.items = decoded
return
}
}
self.items = []
}
在“分配”类中。
在另一个 Swift View 文件中,我想加载这个 UserDefaults“dispItems”并循环这些值。 我仍然处于 Swift/SwiftUI 的开头,我用来存储它的代码取自几个教程。 我假设如果我这样做加载它:
let encoder = JSONEncoder()
if let encoded = try? encoder.encode(items) {
UserDefaults.standard.set(encoded,forKey: "Items")
}
但我假设“项目”将包含一个结构;如何获取值并将它们显示在 ForEach 循环中?
谢谢 马可
解决方法
我喜欢使用 UserDefaults.standard.set(try? PropertyListEncoder().encode(items),forKey: "DispItems")
。这样你就可以编码,然后你可以使用
typealias DispItems = [DispItem]
guard let data = UserDefaults.standard.object(forKey: "player") as? Data else {
return
}
guard let dispItems = try? PropertyListDecoder().decode(DispItems.self,from: data) else {
return
}
dispItems.forEach{
//Do what you'd like with the items
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。