首页 > 解决方案 > SwiftUI 中会话之间的选定 CoreData 记录

问题描述

我的 CoreData 由公司和员工组成 - 1 家公司可以有很多员工。

我允许用户选择一家公司,我的应用程序显示员工 - 我希望在会话之间传递这个公司选择。最好将此选择存储在 UserDefaults、CoreData 或其他方式中吗?我应该存储什么、公司的 UUID、整个实体等?还是我以错误的方式处理这一切?

任何帮助或指导将不胜感激。

标签: core-dataswiftui

解决方案


@SceneStorage("ListView.selectedItem") private var selectedItemId: String?

SceneStorage在需要自动状态恢复值时使用。SceneStorage工作原理与 非常相似State,只是它的初始值如果之前保存过则由系统恢复,并且该值与SceneStorage同一场景中的其他变量共享。系统代您管理保存和恢复SceneStorage。支持的基础数据SceneStorage对您不可用,因此您必须通过SceneStorage属性包装器访问它。系统不保证数据将被持久化的时间和频率。-苹果

将它放在用户进行选择的任何地方。

NavigationLink(
    destination: Text("Item at \(item.timestamp!, formatter: itemFormatter)"),
    tag: item.objectID.description,
    selection: $selectedItemId,
    label: {Text("Item at \(item.timestamp!, formatter: itemFormatter)")})

推荐阅读