Here's my project:
struct Project: App {
@StateObject private var dataController = DataController()
@FetchRequest(sortDescriptors: []) var students: FetchedResults<Student>
var body: some Scene {
MainScene()
Settings { Text("Setting") }
MenuBarExtra("Menu", systemImage: "swift") {
List(students) { student in
Text(student.name ?? "Unknown")
}
Divider()
Button("Add") {
let id = UUID()
let name = "Foo"
let context = dataController.container.viewContext
let student = Student(context: context)
student.id = id
student.name = name
try? context.save()
}
}
}
}
I am new to use CoreData, in this tutorial he passed the viewContext
to enviroment managedObjectContext
, so in the ContentView
he can use it directly by calling @Environment(\.managedObjectContext) var moc
.
But in the MenuBarExtra
, there's no place to inject this enviroment values, even if I call it directly (let context = dataController.container.viewContext
) the compiler give me warnnings:
Context in environment is not connected to a persistent store coordinator.
So I don't know how to use it in my example.