Во-первых, @EnvironmentObject
для классов. Поэтому, если вы хотите связать примитивный тип, такой как Int, вы можете использовать только Binding
. Во-вторых, я думаю, что это вызовет проблемы, когда вы попытаетесь определить более одного @EnvironmentObject
одного типа. Итак, когда вы можете использовать Binding
- вы должны это сделать. Это только мое мнение.
class SomeClass: ObservableObject{
@Published var value: Int
init(value: Int){
self.value = value
}
}
struct ContentView: View {
@State var one: SomeClass = SomeClass(value: 1)
@State var two: SomeClass = SomeClass(value: 2)
var body: some View {
Adss().environmentObject(one).environmentObject(two)
}
}
struct Adss: View{
@EnvironmentObject var two: SomeClass
var body: some View{
Text("there must be two: \(two.value)")//prints "1"
}
}
вам придется определять все объекты нужного типа в прямом порядке, даже если они вам не нужны