当我使用以下方法调用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())
}
}