swiftui - 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 文件中使用
解决方案
推荐阅读
- amazon-sns - EventBridge 消息未发布到 SNS
- c# - DataGridViewComboBoxColumn 事件触发太多次
- google-sheets - 如何根据多个条件进行 VLOOKUP 并返回最新的行结果?
- outlook - Outlook 加载项不适用于 Windows 上的 IMAP
- dynamics-365 - 如何将数据从一个 Common Data Service 推送到另一个由记录状态更改触发的 CDS?
- sql - 基于数据的 Oracle Pivot 帮助
- asp.net-mvc - 找不到 HttpPostedFileBase Visual Studio 2019
- rust - rsmpi 'mpi = 0.5.4' 由于明显拼写错误的函数调用而无法编译
- ios - Swift hitTest:point withEvent 来检测子视图
- python - 获得由 geograpy3 提取的国家/地区的置信度/距离