Итак, у меня есть приложение, например, приложение-ориентир от Apple.
Я пытаюсь выяснить, как сохранить избранное, но я борюсь с ним.
Я пытался с 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 файл, в котором размещено действие кнопки