私はWikipediaSearchViewController.swiftライン47-64から詳細RxSwift/RxCocoaの次のコード例は何ですか?
.drive(resultsTableView.rx_itemsWithCellIdentifier("WikipediaSearchCell",
cellType: WikipediaSearchCell.self))
{ (_, viewModel, cell) in
cell.viewModel = viewModel
}
に理解しようとしています。 呼び出すことはできません、私は具体的な型シグネチャを見て、引数を抽出しようとしたが、
let temp1 = searchBar.rx_text
.asDriver()
.throttle(0.3)
.distinctUntilChanged()
.flatMapLatest { query in
API.getSearchResults(query)
.retry(3)
.retryOnBecomesReachable([], reachabilityService: ReachabilityService.sharedReachabilityService)
.startWith([]) // clears results on new search term
.asDriver(onErrorJustReturn: [])
}
.map { results in
results.map(SearchResultViewModel.init)
}
let driveArg1 = resultsTableView.rx_itemsWithCellIdentifier("WikipediaSearchCell", cellType: WikipediaSearchCell.self)
let driveArg2 = { (_, viewModel: SearchResultViewModel, cell: WikipediaSearchCell) in
cell.viewModel = viewModel
}
temp1.drive(driveArg1, curriedArgument: driveArg2)
.addDisposableTo(disposeBag)
への書き換えが
を与える「rx_itemsWithCellIdentifier」タイプ「(文字列の引数リストで、 cellType:UITableViewCell.Type「)driveArg1ため
と
式の種類が文脈なしに曖昧です
for driveArg2 drive
とrx_itemsWithCellIdentifier
の
署名が
public func drive<R1, R2>(with: Self -> R1 -> R2, curriedArgument: R1) -> R2 {}
public func rx_itemsWithCellIdentifier(cellIdentifier: String, cellType: Cell.Type = Cell.self)(source: O)(configureCell: (Int, S.Generator.Element, Cell) -> Void) -> Disposable {}
ですが、この時点でスウィフト構文は、私にとってとても不可解です。誰でも署名を説明でき、コードで何が起こるのですか?
:それは、一般的な部分は、これが拡大し、すべてで
drive
署名を交換して、単に
rx_itemsWithCellIdentifier
の戻り値の型である、drive
のための型シグネチャは、うまくいけば、より理にかなっていますある種のジェネリック型の不一致があることを理解していました。また、rx_itemsWithCellIdentifier関数のパラメータには、汎用タイプの(S:SequenceType)がありません。 –