0

我有一个 SwiftUI 应用程序,它有一个 MainView,这正在调用一个像

this:.sheet(isPresented: $showingSheetFilter) {
    FilterView()
}

FilterView 看起来像这样:

import SwiftUI

struct FilterView: View {

    @FetchRequest(
        entity: Category.entity(),
        sortDescriptors: [
            NSSortDescriptor(keyPath: \Category.title, ascending: true)
        ]

    ) var categories: FetchedResults<Category>

    var body: some View {
        List {
            ForEach(categories, id: \.self) { (cat: Category) in
                Text(cat.title!)
            }
        }.onAppear {
            print(self.categories.count)
        }
    }
}

如果我调用工作表,我会得到一个转储:

Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

在出现。如果我删除 onAppear,我会在 ForEach 中得到它。

为什么会这样?

4

1 回答 1

0

正如我在我的环境中对问题所评论的那样,一切正常。我看到的唯一区别是我在工作表中明确传递上下文,如下所示

Button("Test Sheet") { self.isSheet = true }
    .sheet(isPresented: $isSheet) {
        TestListView().environment(\.managedObjectContext, context)
}

请尝试做同样的事情。以防万一。

于 2020-02-19T17:32:02.330 回答