Xcode 预览在 DB 循环读取 SwiftUI 时崩溃



当我使用以下方法调用Core Data时:

@FetchRequest(
entity: Entity.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: Entity.id, ascending: true),
]
)  var myData: FetchedResults<Entity>

然后在视图中:

VStack {
ForEach(myData, id: .self) { data in
Text("Test")
}
}

Xcode 实时预览崩溃,如果我用简单的文本删除 ForEach,它会起作用,我该如何解决这个问题?这是我目前的预览:

struct HomeItemListView_Previews: PreviewProvider {
static var previews: some View {
HomeItemListView()
}
}

这是它显示的错误:

PotentialCrashError: MyApp.app may have crashed
MyApp.app may have crashed. Check ~/Library/Logs/DiagnosticReports for any crash logs from your application.
==================================
|  Error Domain=com.apple.dt.ultraviolet.service Code=12 "Rendering service was interrupted" UserInfo={NSLocalizedDescription=Rendering service was interrupted}

作为旁注,代码编译良好,在普通模拟器上显示良好,它是有问题的实时模拟器。

更新:所以我有一个控制第一个屏幕的viewRouter,例如载入,如果为真,则转到入职,如果为假,则转到HomeView。 这就是我设置场景委托的方式:

let viewRouter = ViewRouter()
let contentView = MotherView()
.environment(.managedObjectContext, context)
.environmentObject(viewRouter)
// Set the MotherView as the root view
window.rootViewController = UIHostingController(rootView: contentView)

在我的母亲视图上,我有这样的预览:

struct MotherView_Previews: PreviewProvider {
static var previews: some View {
MotherView().environmentObject(ViewRouter())
}
}

在主页视图上,我是这样的:

struct HomeView_Previews: PreviewProvider {
static var previews: some View {
HomeView()
}
}

因此,最有可能的是,您的HomeItemListView预览应设置为如下

struct HomeItemListView_Previews: PreviewProvider {
static var previews: some View {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
return HomeItemListView()
.environment(.managedObjectContext, context)
.environmentObject(ViewRouter())
}
}

最新更新