RxSwift in swift 4、绑定数据到tableview

RxSwift in swift 4, binding data to a tableview

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

大约一半的时候,他将数据源(汽车)绑定到 tableView。这是我似乎无法在 swift 4.

中工作的部分

我正在使用以下 pods:

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

这是我尝试过的代码,但我遇到了错误(我认为在图片上更容易看到):

我已经查看了所有其他提到此修复的问题:

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

错误消息具有误导性。问题在于您初始化 cars 属性 的方式。您的 cars Variable 包装了一个 可选类型 。您不能将其绑定到 table 视图。

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

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

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

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

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

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