我的核心数据模型中有两个实体,Components
和to-many
。一台计算机可以具有多个组件,因此关系设置为Computer
。 computerName
还具有属性 @Environment(\.managedObjectContext) var moc: NSManagedObjectContext
@FetchRequest(entity: Computer.entity(), sortDescriptors: []) var computerToDisplay: FetchedResults<Computer>
。
添加组件时,我希望所选计算机出现在添加组件视图中。这个添加组件视图是用SwiftUI编写的,我有以下代码来创建ManagedObjectContext并获取计算机对象:
ForEach(computerToDisplay, id: \.self) { computer in
Text(computer.computerName)
}
然后我运行下面的ForEach循环,希望它可以抓住计算机并将其放置在“文本”字段中
Thread 1: Exception: "executeFetchRequest:error: A fetch request must have an entity."
使用此代码,当我尝试打开添加组件视图时,出现以下错误:
@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())
}
现在,我正在从UIKit ViewController加载添加组件视图。所以我不确定是否没有传递给添加组件视图。
这是我加载组件视图的方式:
{{1}}
任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
尝试一下,
@IBSegueAction func addComponentSegueAction(_ coder: NSCoder) -> UIViewController? {
let swiftUIView = UIHostingController(coder: coder, rootView: AddComponentView().environment(\.managedObjectContext, moc!)
return swiftUIView
}
似乎,您正在使用AddComponentView()
创建UIHostingViewController的多个实例,并返回环境中没有AddComponentView()
managedObjectContext的一个实例。
谢谢!