我的核心数据模型中有两个实体:Computer和Components。一台计算机可以有多个组件,因此关系设置为to-many。Computer还有一个属性computerName。
添加组件时,我希望选定的计算机出现在“添加组件”视图中。这个add component视图是用SwiftUI编写的,我有以下代码来创建ManagedObjectContext和获取computer对象:
@Environment(\.managedObjectContext) var moc: NSManagedObjectContext
@FetchRequest(entity: Computer.entity(), sortDescriptors: []) var computerToDisplay: FetchedResults<Computer>然后,我运行以下ForEach循环,我希望它能抓取一台计算机并将其放入文本字段中
ForEach(computerToDisplay, id: \.self) { computer in
Text(computer.computerName)
}使用这段代码,当我试图打开add component视图时,我得到了以下错误:
Thread 1: Exception: "executeFetchRequest:error: A fetch request must have an entity."现在,我从UIKit ViewController加载add component视图。所以我不确定是否有什么东西没有传递到add component视图。
这就是我加载组件视图的方式:
@IBSegueAction func addComponentSegueAction(_ coder: NSCoder) -> UIViewController? {
let swiftUIView = UIHostingController(rootView: AddComponentView().environment(\.managedObjectContext, moc!))
present(swiftUIView, animated: true, completion: nil)
return UIHostingController(coder: coder, rootView: AddComponentView())
}任何帮助都将不胜感激,谢谢。
发布于 2020-05-07 01:05:53
尝尝这个,
@IBSegueAction func addComponentSegueAction(_ coder: NSCoder) -> UIViewController? {
let swiftUIView = UIHostingController(coder: coder, rootView: AddComponentView().environment(\.managedObjectContext, moc!)
return swiftUIView
}看起来,您正在使用您的AddComponentView()创建多个UIHostingViewController实例,并返回环境中没有AddComponentView() managedObjectContext的实例。
谢谢!
https://stackoverflow.com/questions/61621313
复制相似问题