Я создаю приложение Manager Task Manager, где пользователи создают пользовательские квесты, зарабатывают баллы и выкупают вознаграждения. Я использую userdefaults для постоянных данных. В то время как награды и точки сохраняют и загружаются правильно, квесты исчезают, когда я оставляю представление. Отладка указывает на то, что кодирование является успешной, но декодирование не удается. ДАННЫЕ.
Код: Выделить всё
import SwiftUI
class PointsManager: ObservableObject {
@Published var quests: [Quest] = []
init() {
loadQuests()
}
func addQuest(title: String, totalPoints: Int) {
let newQuest = Quest(title: title, totalPoints: totalPoints)
quests.append(newQuest)
saveQuests()
}
func saveQuests() {
do {
let encoded = try JSONEncoder().encode(quests)
UserDefaults.standard.set(encoded, forKey: "quests")
print("Encoding successful")
} catch {
print("Encoding failed: \(error.localizedDescription)")
}
}
func loadQuests() {
guard let savedData = UserDefaults.standard.data(forKey: "quests") else {
print("No data found")
return
}
do {
quests = try JSONDecoder().decode([Quest].self, from: savedData)
print("Decoding successful")
} catch {
print("Decoding failed: \(error.localizedDescription)")
}
}
}
struct Quest: Identifiable, Codable {
var id = UUID()
var title: String
var totalPoints: Int
}
< /code>
Вопрос: < /strong>
Почему декодирование проваливается во время кодирования успешных? Как я могу правильно загрузить и сохранять квесты с использованием пользовательских данных Подробнее здесь: https://stackoverflow.com/questions/795 ... erdefaults
Мобильная версия