Как правильно декодировать сохраненные квесты в Swiftui с помощью пользователей?IOS

Программируем под IOS
Ответить
Anonymous
 Как правильно декодировать сохраненные квесты в Swiftui с помощью пользователей?

Сообщение Anonymous »

вступление к проблеме: < /strong>

Я создаю приложение 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>

Почему декодирование проваливается во время кодирования успешных? Как я могу правильно загрузить и сохранять квесты с использованием пользовательских данных 
в swiftui?

Подробнее здесь: https://stackoverflow.com/questions/795 ... erdefaults
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»