RxDataSources `无法推断通用参数 'Self'`
RxDataSources `Generic parameter 'Self' could not be inferred`
我知道有很多关于此的问题,我查看了所有问题,但并没有解决我的问题。我也评论了其中一个,但这个问题似乎不再活跃,所以我不希望那里有答案。
我正在尝试实现 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([=12=].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 示例,现在似乎已经一样了,但我似乎无法修复此错误。
有什么想法吗?
您绑定到 RxTableViewSectionedReloadDataSource
的 Rx 流必须是 Observable<[ActiveOrdersSection]>
类型。我不知道这个例子中你的类型是什么,因为你提供的代码还不够,但是
我认为通过使用 .map { Observable.just([=12=].items) }
结果流将是 Observable<Observable<[Order]>>
类型。
尝试将其更改为:
.map { [ActiveOrdersSection(header: "Your Header", orders: 0.items)] }
我知道有很多关于此的问题,我查看了所有问题,但并没有解决我的问题。我也评论了其中一个,但这个问题似乎不再活跃,所以我不希望那里有答案。
我正在尝试实现 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([=12=].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 示例,现在似乎已经一样了,但我似乎无法修复此错误。
有什么想法吗?
您绑定到 RxTableViewSectionedReloadDataSource
的 Rx 流必须是 Observable<[ActiveOrdersSection]>
类型。我不知道这个例子中你的类型是什么,因为你提供的代码还不够,但是
我认为通过使用 .map { Observable.just([=12=].items) }
结果流将是 Observable<Observable<[Order]>>
类型。
尝试将其更改为:
.map { [ActiveOrdersSection(header: "Your Header", orders: 0.items)] }