【发布时间】:2021-02-16 09:26:03
【问题描述】:
我的 CoreData 由公司和员工组成 - 1 家公司可以有很多员工。
我允许用户选择一家公司,我的应用会显示员工 - 我希望在会话之间传递此公司选择。最好将此选择存储在 UserDefaults、CoreData 或其他方式中吗?我应该存储什么、公司的 UUID、整个实体等?还是我以错误的方式处理这一切?
任何帮助或指导将不胜感激。
【问题讨论】:
我的 CoreData 由公司和员工组成 - 1 家公司可以有很多员工。
我允许用户选择一家公司,我的应用会显示员工 - 我希望在会话之间传递此公司选择。最好将此选择存储在 UserDefaults、CoreData 或其他方式中吗?我应该存储什么、公司的 UUID、整个实体等?还是我以错误的方式处理这一切?
任何帮助或指导将不胜感激。
【问题讨论】:
@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)")})
【讨论】: