【发布时间】:2020-05-22 15:23:46
【问题描述】:
当我使用以下方式调用 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 来控制第一个屏幕,例如 Onboarding,如果为 true,则进入 onboarding,如果为 false,则进入 HomeView。 这就是我设置 SceneDelegate 的方式:
let viewRouter = ViewRouter()
let contentView = MotherView()
.environment(\.managedObjectContext, context)
.environmentObject(viewRouter)
// Set the MotherView as the root view
window.rootViewController = UIHostingController(rootView: contentView)
在我的 MotherView 上,我有这样的预览:
struct MotherView_Previews: PreviewProvider {
static var previews: some View {
MotherView().environmentObject(ViewRouter())
}
}
在主页视图上我有这样的:
struct HomeView_Previews: PreviewProvider {
static var previews: some View {
HomeView()
}
}
【问题讨论】:
-
很可能是上下文环境或某些 environmentObject 未设置。
-
如何检查?在 SceneDelegate 中? @Asperi
-
对于预览(在预览提供程序中),您应该以与在运行时场景委托中相同的方式设置所有内容(如果它是根视图,则在父视图中设置)是子视图)
-
我更新了上面的代码并添加了一些更多信息,例如 SceneDelegate,有帮助吗? @Asperi
标签: swift xcode core-data swiftui