如何坚持从SwiftUI列表中选择收藏夹?

时间:2020-03-23 11:50:55

标签: swiftui

我正在跟着这个SwiftUI教程:https://developer.apple.com/tutorials/swiftui/handling-user-input

这里的概念非常适合我要创建的应用程序。但是我有一个问题。

尽管本教程非常适合显示使用环境对象更新SwiftUI视图的基础知识(在本例中,是将星状图像添加到收藏夹中的元素。),但我该如何保存这些更改以使其更持久应用程序的运行时。

现在,我可以收藏一堆地标,但是如果我退出并重新启动该应用程序,这些选择将丢失。是否有一种“ SwiftUI友好”的方式来存储这些收藏夹选项,并在冷启动该应用程序时让主“地标列表”视图自动绘制星形图像以标记以前选择的收藏夹?我猜想UserDefaults就是这样,但是我不知道该如何适应这些时髦的环境对象。

谢谢。

编辑:

我现在正在使用UserDefaults来持久存储“ TeamProfile”对象的数组,只要团队被标记为“收藏夹”,该对象就会追加到该数组中。

在我的SwiftUI代码中,我尝试使用以下代码将Star图片添加到收藏夹。这些TeamRow项由父视图内置到列表中。

struct TeamRow: View {
    var team: TeamProfile

    var body: some View {
        HStack {
            Text(team.TeamName)
            Spacer()

            if team.isFavourite || teamsSelected.contains(team) {
                Image(systemName: "star.fill")
                    .imageScale(.medium)
                    .foregroundColor(.yellow)
            }
        }
    }
}

teamsSelected是UserDefaults维护的数组。它应该在我的持久数组中为TeamRow项添加一个星号(该数组在应用启动时加载,我可以验证其内容)。但是,只有当我在应用会话期间做出 new 最喜欢的选择时,才会在行上绘制星星。

我可以使用UserDefaults验证我保留的数据的内容,所以我不知道为什么SwiftUI在启动应用程序时通过加注正确的元素而不响应。

0 个答案:

没有答案