I have this class:
class MyModel:ObservableObject {
var selectedObjectIndex:Int {
set {}
get {
let selectedResult = objects.filter({ $0 == selectedObject })
if selectedResult == 0 { return 0 }
return objects.firstIndex(of: selectedResult.first!)!
}
}
}
This selectedObjectIndex would normally be a @Published var selectedObjectIndex:Int but because it is a computed property, I cannot use @Published there.
So I was forced to add this to the model
func getselectedObjectIndexBinding() -> Binding<Int> {
let binding = Binding<Int>(
get: { () -> Int in
return self.selectedObjectIndex
}) { (newValue) in
self.selectedObjectIndex = newValue
}
return binding
}
In the view I have a Picker, using this like
Picker(selection: myModel.getselectedObjectIndexBinding(),
label: Text("select")) {
The picker appears correctly but If I set a new value on it, the model selectedObjectIndex is not updated.
selectedObjectIndex.set. From your code the intention is not clear - would you elaborate more?