SwiftUI 中会话之间的选定 CoreData 记录
Posted
技术标签:
【中文标题】SwiftUI 中会话之间的选定 CoreData 记录【英文标题】:Selected CoreData record between sessions in SwiftUI 【发布时间】:2021-02-16 09:26:03 【问题描述】:我的 CoreData 由公司和员工组成 - 1 家公司可以有很多员工。
我允许用户选择一家公司,我的应用会显示员工 - 我希望在会话之间传递此公司选择。最好将此选择存储在 UserDefaults、CoreData 或其他方式中吗?我应该存储什么、公司的 UUID、整个实体等?还是我以错误的方式处理这一切?
任何帮助或指导将不胜感激。
【问题讨论】:
【参考方案1】:@SceneStorage("ListView.selectedItem") private var selectedItemId: String?
当您需要自动恢复值的状态时,您可以使用SceneStorage
。 SceneStorage
的工作原理与State
非常相似,不同之处在于它的初始值如果之前保存过则由系统恢复,并且该值与同一场景中的其他SceneStorage
变量共享。
系统代您管理SceneStorage
的保存和恢复。支持SceneStorage
的基础数据对您不可用,因此您必须通过SceneStorage
属性包装器访问它。系统不保证数据将被持久化的时间和频率。 -Apple
把它放在用户选择的任何地方。
NavigationLink(
destination: Text("Item at \(item.timestamp!, formatter: itemFormatter)"),
tag: item.objectID.description,
selection: $selectedItemId,
label: Text("Item at \(item.timestamp!, formatter: itemFormatter)"))
【讨论】:
以上是关于SwiftUI 中会话之间的选定 CoreData 记录的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI:在列表中的两个视图之间画一条线/如何确定视图的中心位置?
SwiftUI CoreData MVVM 解决错误“EXC_BAD_INSTRUCTION....”