首页 > 解决方案 > SwiftUI 保存收藏

问题描述

所以我有一个应用程序,比如来自苹果的地标应用程序。

我试图弄清楚如何保存收藏夹,但我正在努力解决这个问题。

我试过了save()userDefaults但没有结果。

一些解决方案使用Toggle(isOn:),但代码不使用它。

地标应用程序的代码是:

Button(action: {
   self.userData.landmarks[self.landmarkIndex]
      .isFavorite.toggle()
}) {
   if self.userData.landmarks[self.landmarkIndex]
      .isFavorite {
      Image(systemName: "star.fill")
         .foregroundColor(Color.yellow)
   } else {
      Image(systemName: "star")
         .foregroundColor(Color.gray)
   }
}

我的尝试之一如下:

Button(action: {
                    UserDefaults.standard.set(self.userData.landmarks[self.landmarkIndex]
                        .isFavorite.toggle(self.isFavorite, forKey: Bool)
                    )
                }) {
                    if UserDefaults.standard.set(self.userData.landmarks[self.landmarkIndex])
                        .isFavorite {
                        Image(systemName: "star.fill")
                            .foregroundColor(Color.yellow)

                        } else {
                        Image(systemName: "star")
                            .foregroundColor(Color.gray)
                    }

我收到一个错误“表达式类型不明确,没有更多上下文”。

按钮操作嵌入在导航条中。

userData 的代码在 UserData.swift 文件中:

import SwiftUI

final class UserData: ObservableObject {
    @Published var showFavoritesOnly = false
    @Published var landmarks = landmarkData
}

@EnvironmentObject var userData: UserData

在放置按钮操作的 landmarkdetail.swift 文件中使用

标签: swiftuidata-persistence

解决方案


推荐阅读