2017-10-03 7 views
3

への結合データ:http://candycode.io/a-practical-mvvm-example-in-swift-part-2/SWIFT 4でRxSwift、私はMVVMパターンとRxSwiftに、この導入に従うことをしようとする問題を抱えているテーブルビュー

半分の方法についてダウン、彼はのtableViewにデータソース(車)と結合します。この私は、次のポッドを使用しています、私は迅速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()

しかし、それは速い4バージョンで動作させるように見えることはできません。 あなたが私を助けることを願っています:)

答えて

6

エラーメッセージは誤解を招きます。問題は、carsプロパティを初期化する方法にあります。あなたのcarsVariableは、オプションのタイプをラップします。テーブルビューにバインドすることはできません。

変更するには、次の行に初期化し、すべてがうまくある:

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

ところで、あなたはVariablecars配列をラップする必要はありません、あなたは配列としてそれを残すことができます。

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) 
関連する問題