内部SceneDelegate
上下文是通过.environment(\.managedObjectContext, context)
为什么不能通过View的属性传递的?这样做的好处是什么?
所以不要在下面做
let contentView = FlightsEnrouteView()
.environment(\.managedObjectContext, context)
我们可以通过View的初始化方法传递上下文
let contentView = FlightsEnrouteView(context: context)
所以里面FlightsEnrouteView
应该是
struct FlightsEnrouteView: View {
var context: NSManagedObjectContext
}
测试它并编译
为什么不能通过View的属性传递它?这样做的好处是什么?
它可以。只是它被其他包装程序(例如@FetchRequest
来自环境)使用,但是没有人阻止您将它们组合在一起,因为上下文是引用类型的对象,因此您可以随时传递其引用。
因此,以下内容绝对有效:
let contentView = FlightsEnrouteView(context: context)
.environment(\.managedObjectContext, context)
和
struct FlightsEnrouteView: View {
@EnvironmentObject(\.managedObjectContext) var envContext
var context: NSManagedObjectContext
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句