Вызывающий класс выдает ошибку EXC_BAD_INSTRUCTION - PullRequest
2 голосов
/ 07 мая 2020

У меня есть следующий класс:

class CoreDataController {
@FetchRequest(
        entity: Meals.entity(),
        sortDescriptors: [
            NSSortDescriptor(keyPath: \Meals.meal_type, ascending: true),
        ]
    ) var meal: FetchedResults<Meals>
}

, и я вызываю его здесь:

struct itemListView: View {

private var mealData = CoreDataController()

var body: some View {

        List {
            ForEach(mealData.meal, id: \.self) { language in
                Button(action: {
                    print("\(language)")
                }) {
                    Text("\(language.meal_type ?? "Anonymous")")
                }

            }
        }

Он компилируется, но выдает ошибку: Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

Как исправить?

1 Ответ

0 голосов
/ 07 мая 2020

@FetchRequest - это оболочка свойства View Dynami c value и ожидает @Environment(\.managedObjectContext), которое может быть введено только в View, поэтому решение будет заключаться в том, чтобы поместить вашу конструкцию запроса на выборку в поле зрения, где она должна быть .

@Environment(\.managedObjectContext) var context

@FetchRequest(
        entity: Meals.entity(),
        sortDescriptors: [
            NSSortDescriptor(keyPath: \Meals.meal_type, ascending: true),
        ]
    ) var meal: FetchedResults<Meals>

var body: some View {

        List {
            ForEach(meal, id: \.self) { language in

        // .. your other code
...