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?

当您需要自动恢复值的状态时,您可以使用SceneStorageSceneStorage 的工作原理与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....”

SwiftUI:列表中的数据有时出现有时不出现

在 CoreData 记录中进行更改,SwiftUI

SwiftUI - 在Coredata中添加链接对象后视图不更新

如何在 SwiftUI 中使用 CoreData 更改数据值?