RxDataSources`无法推断通用参数'Self'`
Posted
技术标签:
【中文标题】RxDataSources`无法推断通用参数\'Self\'`【英文标题】:RxDataSources `Generic parameter 'Self' could not be inferred`RxDataSources`无法推断通用参数'Self'` 【发布时间】:2019-03-26 12:06:48 【问题描述】:我知道有很多关于此的问题,我查看了所有问题,但它并没有解决我的问题。我还评论了其中一个,但问题似乎不再活跃,所以我不希望那里有答案。
我正在尝试实现 RxDataSources。请参阅下面的代码:
struct ActiveOrdersSection: Equatable
static func == (lhs: ActiveOrdersSection, rhs: ActiveOrdersSection) -> Bool
return true
var header: String
var orders: [Order]
extension ActiveOrdersSection: SectionModelType
typealias Item = Order
var items: [Item]
set
orders = items
get
return orders
init(original: ActiveOrdersSection, items: [Order])
self = original
self.items = items
还有 ViewController:
class MainViewController: UITableViewDelegate, UITableViewDataSource
var db: DisposeBag?
var dataSource: RxTableViewSectionedReloadDataSource<ActiveOrdersSection>?
private func setupOrderRx(_ shopId: Int64)
let dataSource = RxTableViewSectionedReloadDataSource<ActiveOrdersSection>(
configureCell: ds, tv, ip, item in
let cell = tv.dequeueReusableCell(withIdentifier: "Cell", for: ip) as! UITableViewCell
cell.textLabel?.text = "Item \(item.id)"
return cell
,
titleForHeaderInSection: ds, ip in
return ds.sectionModels[ip].header
)
self.dataSource = dataSource
db = DisposeBag()
let ors = OrderRxService.listAsShop(shopId, status: .active)
.map Observable.just($0.items) // Convert from Observable<CollectionResponse<Order>> to Observable<Order>
.observeOn(MainScheduler.instance)
.bind(to: self.rxTableView.rx.items(dataSource: dataSource))
我在.bind(to: self.rxTableView.rx.items(dataSource: dataSource))
上收到Generic parameter 'Self' could not be inferred
。我查看了 RxDataSources 示例,现在似乎有相同的内容,但我似乎无法修复此错误。
有什么想法吗?
【问题讨论】:
【参考方案1】:您绑定到RxTableViewSectionedReloadDataSource
的Rx 流必须是Observable<[ActiveOrdersSection]>
类型。我不确切知道您在此示例中的类型是什么,因为您提供的代码还不够,但是
我认为通过使用.map Observable.just($0.items)
,结果流将是Observable<Observable<[Order]>>
类型。
尝试将其更改为:
.map [ActiveOrdersSection(header: "Your Header", orders: 0.items)]
【讨论】:
谢谢!我似乎没有完全理解 RxDataSources 的概念。这解决了我的问题。以上是关于RxDataSources`无法推断通用参数'Self'`的主要内容,如果未能解决你的问题,请参考以下文章