Я создаю очень простое приложение со списком дел, чтобы понять, как работает локальное сохранение.
Однако я уперся в стену, и когда я вызываю context.insert(item), новая задача никогда не появляется в моем списке, а мой массив @Query (items) всегда имеет счетчик 0.
Я просматривал документацию, смотрел руководства и даже - спросил ChatGPT, но я все еще не могу понять, чего не хватает.
Вот моя настройка:
Код: Выделить всё
import Foundation
import SwiftData
@Model
class DataItem: Identifiable {
var id: UUID = UUID()
var text: String
var isCompleted: Bool = false
init(text: String) {
self.text = text
}
}Код: Выделить всё
import SwiftUI
@main
struct SwiftDataIssueApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(for: DataItem.self)
}
}Код: Выделить всё
import SwiftUI
import SwiftData
struct ContentView: View {
@Environment(\.modelContext) private var context
@Query private var items: [DataItem]
@State private var newTask: String = ""
var body: some View {
NavigationView {
List {
ForEach(items) { item in
Text(item.text)
}
}
.navigationTitle(Text("Tasks"))
VStack {
TextField("Enter New Task", text: $newTask)
Button("Add Task", action: addTask)
}
.padding()
}
}
func addTask() {
let item = DataItem(text: newTask)
context.insert(item)
print(item.text)
print(items.count)
newTask = ""
}
}Я не понимаю, почему фрагменты кода вставляются неправильно. Я не могу публиковать изображения. Хочу отметить, что items.count продолжает возвращать 0.
Кто-нибудь знает, почему?
Подробнее здесь: https://stackoverflow.com/questions/797 ... rsist-data
Мобильная версия