RxSwift:将元素追加到Observable <[_]>

ale*_*xjk 8 swift rx-swift

我有一个array(Observable<[_]>),它是tableview的数据源.我希望能够向它添加新元素,并在每次将新元素附加到数组时更新tableview.我找不到如何添加新元素Observable<[_]>.

sol*_*ell 15

使用SubjectVariable.然后将该value属性视为您的属性Arrayappend添加新元素.订阅Variable通道asObservable().

我通过使用简化了代码示例String,但是你会想要使用某种代码UITableViewCell.

let dataSource = Variable<[String]>([])

dataSource.value.append("some string A")

dataSource.asObservable()
    .subscribeNext { e in
        print(e)
    }
    .addDisposableTo(disposeBag)

dataSource.value.append("some string B")
Run Code Online (Sandbox Code Playgroud)

获得dataSource后,您需要将其连接到tableView via

dataSource.asObservable().bindTo(yourTableView.rx_itemsWithCellIdentifier("MyCellClass", cellType: MyCellClass.self)) { (row, element, cell) in
      // do your cell configuration here
}
Run Code Online (Sandbox Code Playgroud)

  • 由于计划弃用 Variable,您对如何使用BehaviorRelay(推荐的替代方案)执行此操作有何想法?不允许behaviorRelay.value.append,因为BehaviorRelay.value 是非变异成员。 (2认同)