SwiftUI CoreData 崩溃预览

ARR*_*ARR 4 core-data swift swiftui

我有以下代码来绘制汽车列表,数据存储在 coredata 中。

但是,当我添加从数据库中获取数据的代码行时,swiftui 预览似乎中断了。

错误日志告诉以下内容:

PotentialCrashError:测试 app.app 可能已经崩溃

里程 app.app 可能已崩溃。检查 ~/Library/Logs/DiagnosticReports 以获取应用程序中的任何崩溃日志。

==================================

| Error Domain=com.apple.dt.ultraviolet.service Code=12 “渲染服务被中断” UserInfo={NSLocalizedDescription=渲染服务被中断}

这是 foreach 开始和结束的部分导致错误的代码:

import SwiftUI

struct CarListView: View {

    @Environment(\.managedObjectContext) var managedObjectContext
    @FetchRequest(fetchRequest: Car.all()) var cars: FetchedResults<Car>

    var body: some View {

        NavigationView {
            ZStack {
                List {
                    Section(header: Text("Cars")) {
                        ForEach(self.cars, id: \.numberPlate) { car in
                            HStack {
                                VStack(alignment: .leading) {
                                    Text(car.name)
                                    Text(car.numberPlate)
                                }
                            }
                        }
                    }
                }
            }
        }
    }

}

struct CarListView_Previews: PreviewProvider {
    static var previews: some View {
        CarListView()
    }
}
Run Code Online (Sandbox Code Playgroud)

ARR*_*ARR 7

这个问题似乎与它无法以某种方式获得允许在预览模式下获取数据的上下文有关。通过在预览模式下手动执行此操作,可以解决此问题。

struct CarListView_Previews: PreviewProvider {
    static var previews: some View {
        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        return CarListView().environment(\.managedObjectContext, context)

    }
}
Run Code Online (Sandbox Code Playgroud)