В настоящее время я следую учебному пособию от Hacking с Swift, чтобы интегрировать SwiftData в проект Swiftui. Код, сгенерированный на основе учебника, представлен ниже. Однако при запуске приложения возникает ошибка: SwiftData/ModelContainer.Swift: 144: Фатальная ошибка: не удалось найти активной контейнер для студента .
Я ищу помощь в решении этой проблемы.import SwiftUI
import SwiftData
@Model
class Student {
var id: UUID
var name: String
init(id: UUID, name: String) {
self.id = id
self.name = name
}
}
@main
struct project8App: App {
var body: some Scene {
WindowGroup {
VStack {
ContentView()
}
}
.modelContainer(for: Student.self)
}
}
struct ContentView: View {
@Environment(\.modelContext) var modelContext
@Query var students: [Student]
let allStudents = [
Student(id: UUID(), name: "John"),
Student(id: UUID(), name: "Paul"),
Student(id: UUID(), name: "George"),
Student(id: UUID(), name: "Ringo"),
]
var body: some View {
VStack {
ForEach(students) { student in
Text("\(student.name)")
}
Button(action: {
// random student
let student = allStudents.randomElement()!
modelContext.insert(student)
}) {
Text("Add/Change name")
}
}
}
}
< /code>
p.s. Похоже, что проблема может быть связана с тем, что контейнер не инициализирован. ModelContainer (для: Student.elf) . Мне удалось разрешить ошибку с измененной версией ниже. Тем не менее, мне все еще интересно по поводу причин неисправности оригинальной версии и различий между двумя реализациями.// version 2, which is ok to run
@main
struct project8App: App {
let modelContainer: ModelContainer
init() {
do {
modelContainer = try ModelContainer(for: Student.self)
} catch {
fatalError("Could not initialize ModelContainer")
}
}
var body: some Scene {
WindowGroup {
VStack {
ContentView()
}
}
.modelContainer(modelContainer)
}
}
Подробнее здесь: https://stackoverflow.com/questions/777 ... ently-acti