ios - 无法推断出 RxDataSources `Generic parameter ' Self'

标签 ios swift rx-swift rxdatasources

我知道有很多关于此的问题,我查看了所有这些问题,但它并没有解决我的问题。我也评论了其中一个,但问题似乎不再活跃,所以我不希望在那里得到答案。

我正在尝试实现 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
    }
}

和 View Controller :

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 示例,现在似乎有相同的情况,但我似乎无法修复此错误。

有什么想法吗?

最佳答案

您绑定(bind)到 RxTableViewSectionedReloadDataSource 的 Rx 流必须是 Observable<[ActiveOrdersSection]> 类型.我不知道这个例子中你的类型是什么,因为你提供的代码还不够,但是 我认为通过使用 .map { Observable.just($0.items) }结果流的类型为 Observable<Observable<[Order]>> . 尝试将其更改为: .map { [ActiveOrdersSection(header: "Your Header", orders: 0.items)] }

关于ios - 无法推断出 RxDataSources `Generic parameter ' Self',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55356766/

相关文章:

ios - 自定义 UITableViewSectionHeader - 图像与绘图

arrays - 使用数组切片中的部分和行填充表

ios - 如何在 Facebook 上从表格 View 共享内容

swift - 我如何在 RxSwift 中获取 controlEvent 类型?

在 RxSwift 中快速使用未解析的标识符 `create`

ios - RxCocoa - 为什么 PublishRelay 没有 asDriver() 方法?

ios - 通过 Mailcore 2 : Thread ID vs Message ID vs UID 获取 Gmail

ios - 如何自定义 fbfrienpickerview Controller 并在自定义表格 View 中显示

ios - 多次使用 UIPickerView。 iOS objective-C

ios - 如何使用 swift 在 Xcode 中设置背景图片?