MutableProperty, содержащий словарь в ReactiveSwift

Я использую ReactiveSwift для создания структуры, содержащей словарь. Я хочу слушать изменения в словаре.

struct Model {
    let a: MutableProperty<[String: Int]> = MutableProperty([:])
}

Однако мне трудно понять, как связать это свойство со слушателем. Я хочу сделать что-то вроде:

textView.reactive.text <~ model.a["key"]

Есть ли решение для хранения словарей в изменяемых свойствах?


person sdasdadas    schedule 28.02.2017    source источник


Ответы (2)


Только значение, связанное с MutableProperty (в вашем случае, словарь), может быть привязано к цели привязки, а не к значению в словаре. Это означает, что вы не можете использовать оператор <~ для значения из словаря. Вам нужно будет сделать что-то вроде:

model.a.producer.startWithValues { [weak textView] value in
     textView?.text = value["key"]
}
person tkuichooseyou    schedule 01.03.2017
comment
Спасибо, это очень полезно! В итоге я сделал свойства внутри моего словаря изменяемыми, но это предполагает, что словарь имеет фиксированный размер. Ваш ответ работает для неизвестного случая. - person sdasdadas; 01.03.2017

Или вы можете сделать это так:

textView.reactive.text <~ model.a.map { $0["key"] }
person biobod    schedule 30.03.2017