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
Ответить

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

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

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

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

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