Можно ли обновить свойство ObservableObject из вычисляемого свойства?
struct ContentView: View {
@EnvironmentObject var foobar: Foobar
@State var localProp1: Double = 0 {
didSet {
self.foobar.someInstance.prop1 = self.localProp1
}
}
var body: some View {
VStack {
Text("localProp1 is \(String(format: "%.2f", self.localProp1))")
Slider(value: self.$localProp1, in: 60...120, step: 1)
}
}
}
class Foobar: ObservableObject {
var someInstance: SomeInstance = SomeInstance()
}
class SomeInstance {
var prop1: Double
...
}
Я понимаю, что могу:
Slider(value: self.$foobar.someInstance.prop1, in: 60...120, step: 1)
Но вариант использования, который я в идеале, позволил бы мне иметь локальная переменная. Если не найти способ обойти эту проблему, я обнаружу, что prop1 в Text(...)
не обновляется при изменении.
struct ContentView: View {
@EnvironmentObject var foobar: Foobar
var body: some View {
VStack {
Text("localProp1 is \(String(format: "%.2f", self.foobar.someInstance.prop1))")
Slider(value: self.$foobar.someInstance.prop1, in: 60...120, step: 1)
}
}
}
Поскольку мне нужно использовать ключевое слово @Published перед свойством, чтобы можно было хранить и Publi sh их изменения для подписчиков, но проблема в том, что я не имею контроля над «SomeInstance», я использую его из внешней библиотеки.