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

Alp*_*lpo 4 uitableview ios rx-swift swift4 xcode9

我试图按照MVVM模式和RxSwift的介绍来解决问题.

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

我正在使用以下pods:

pod 'RxSwift', '4.0.0-beta.0'
pod 'RxCocoa', '4.0.0-beta.0'
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的错误即可获得的代码(想想在图片上更容易看到): 在此输入图像描述

我已经查看了所有其他提出修复的问题:
RxSwift,RxCocoa和UITableview
无法使用RxSwift变量asObservable()设置bind(to:UITableView)

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

joe*_*ern 9

错误消息具有误导性.问题在于您初始化cars财产的方式.你的cars Variable包装是一个可选类型.您无法将其绑定到表视图.

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

var cars = Variable((UIApplication.shared.delegate as! AppDelegate).cars)
Run Code Online (Sandbox Code Playgroud)

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

let cars = (UIApplication.shared.delegate as! AppDelegate).cars
Run Code Online (Sandbox Code Playgroud)

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

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