SwiftData: context.insert() не сохраняет данныеIOS

Программируем под IOS
Anonymous
SwiftData: context.insert() не сохраняет данные

Сообщение Anonymous »

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

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