Ios SwiftUI:将多个BindableObject放入环境
在Ios SwiftUI:将多个BindableObject放入环境,ios,swift,dependency-injection,swiftui,Ios,Swift,Dependency Injection,Swiftui,在SwiftUI中,可以使用View对象的environmentObject方法将单个BindableObject放入环境中 如果我想同时将多个BindableObjects放入环境中,该怎么办?我在SwiftUI文档中没有看到任何解决方案。我不希望必须在构造函数中传递对象。对environmentObject()的调用返回一个(修改的)视图,因此您可以链接调用以将多个对象放入环境中。例如: let rootView = ContentView() .environmentObjec
SwiftUI
中,可以使用View对象的environmentObject
方法将单个BindableObject
放入环境中
如果我想同时将多个
BindableObjects
放入环境中,该怎么办?我在SwiftUI文档中没有看到任何解决方案。我不希望必须在构造函数中传递对象。对environmentObject()
的调用返回一个(修改的)视图,因此您可以链接调用以将多个对象放入环境中。例如:
let rootView = ContentView()
.environmentObject(firstBindable)
.environmentObject(secondBindable)
根据苹果官方指南,我猜如果每个视图只有一个environmentObject,那么这样做就可以了。当碰巧有多个对象时,我不确定对象是如何被引用的。对象是如何被引用的?是否有支持文档需要了解更多信息?@MichaelOzeryansky:我不知道它是如何实现的。我观看了WWDC关于SwiftUI的视频,并通过尝试和错误找出了其余部分。根据编译器错误,它似乎在寻找与相同类型匹配的对象。当存在多个相同类型时,它还使用附加的第一个
environmentObject
。可能使用类型名称作为键。当存在多个相同类型的视图时,这是一个有效的用例。例如,计算两次相机曝光之间的光值差(这对于摄影师来说很常见,我是根据经验说的)。我希望我能点击向上箭头50次!这简直要了我的命。非常感谢。