Ich erstelle eine sehr einfache To-Do-Listen-App, um zu verstehen, wie lokale Persistenz funktioniert.
Allerdings bin ich an eine Wand gestoßen und wenn ich context.insert(item) aufrufe, erscheint die neue Aufgabe nie in meiner Liste und mein @Query-Array (Elemente) hat immer den Wert 0.
Ich habe die Dokumentation durchgesehen, Tutorials angesehen, und habe sogar ChatGPT gefragt, aber ich kann immer noch nicht herausfinden, was fehlt.
Hier ist mein Setup:
Code: Select all
import Foundation
import SwiftData
@Model
class DataItem: Identifiable {
var id: UUID = UUID()
var text: String
var isCompleted: Bool = false
init(text: String) {
import SwiftUI
@main
struct SwiftDataIssueApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(for: DataItem.self)
}
}
Code: Select all
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 = ""
}
}
Weiß jemand warum?
Mobile version