Передайте опубликованное свойство как привязку
у меня есть
ObservableObject
с опубликованным словарем строк в массивы с массивами с Ints:
class MyObservableObject: ObservableObject {
@Published var myDict: [String: [[Int]]]
}
И я хочу передать один массив Ints как Binding из того же класса в функцию другой структуры:
{
...
func someFunc(key: String, index: Int) {
someStruct.func(myDict[key]![index])
}
...
}
Я это понимаю
@Published
vars нельзя передавать как Bindings. Я все еще надеюсь, что есть какой-то способ добиться этого. Я также пытался сохранить ссылку на массив в другой структуре, используя переменную inout, но тоже безуспешно.
1 ответ
@Published vars нельзя передавать как Bindings
Это неправда - можно через спроецированное значение через '$', но вы хотите передать не свойство, а часть значения свойства, а это другое дело.
Контекст не ясен, и это
someFunc
плохо пахнет :) - я бы сказал, что здесь нужен некоторый рефакторинг, но, в любом случае, технически можно делать то, что вы хотите, используя динамически сгенерированную привязку на месте, например
func someFunc(key: String, index: Int) {
guard myDict[key] != nil else { return }
someStruct.func(Binding<[Int]>(
get: { self.myDict[key]![index] },
set: { self.myDict[key]![index] = $0 }
))
}