【发布时间】:2019-08-07 08:55:12
【问题描述】:
我们希望使用可观察的字典来通知任何订阅者发生更改。到目前为止,这是作为 BehaviorRelay
实现的现在我们需要在 observable 中添加/删除/更改字典的值。我们尝试了以下方法(简而言之),但没有奏效:
let list = BehaviorRelay<[String: MyClassType]>.init([:])
let newElem = MyClassType()
list.value.updateValue(newElem, forKey: "anykey")
编译器抱怨:不能在不可变值上使用变异成员:'value' 是一个 get-only 属性
以下方法可行,但我发现它很麻烦,而且性能方面可能效率低下:
let list = BehaviorRelay<[String: MyClassType]>.init([:])
let newElem = MyClassType()
let newList = list.value
newList.updateValue(newElem, forKey: "anykey")
list.accept(newList)
UI 端列表的典型订阅者例如是一个 UITableView 或 UICollectionView。
有没有更好的方法来处理这个问题?
【问题讨论】:
标签: arrays swift dictionary observable rx-swift