RxSwift在swift 4中,将数据绑定到tableview

时间:2017-10-03 13:13:19

标签: ios uitableview swift4 xcode9 rx-swift

我在尝试遵循MVVM模式和RxSwift的介绍时遇到了问题。

大约一半,他将数据源(汽车)绑定到tableView。这是我似乎无法在swift 4中工作的部分。

我正在使用以下播客:

pod 'RxSwift', '4.0.0-beta.0'
pod 'RxCocoa', '4.0.0-beta.0'

这是我尝试过的错误即可获得的代码(想想在图片上更容易看到): enter image description here

我已经看了所有其他问题,提到了解决这个问题:
RxSwift, RxCocoa and UITableview
Cannot set bind(to: UITableView) with RxSwift Variable asObservable()

但似乎无法使用swift 4版本。 希望你们能帮助我:))

1 个答案:

答案 0 :(得分:8)

错误消息具有误导性。问题在于您初始化cars属性的方式。您的cars Variable包含可选类型。您无法将其绑定到表视图。

将初始化更改为以下行,一切正常:

var cars = Variable((UIApplication.shared.delegate as! AppDelegate).cars)

顺便说一句,您不必将cars数组包装在Variable中,您可以将其保留为数组:

let cars = (UIApplication.shared.delegate as! AppDelegate).cars

然后使用Observable.of()将其绑定到表视图:

Observable.of(cars).bind(to: tableView.rx.items(cellIdentifier: "CarCell", cellType: CarTableViewCell.self)) { (_, carViewModel: CarViewModel, cell) in
   cell.carViewModel = carViewModel
}.addDisposableTo(disposeBag)