带有 rxswift 的多张地图

Posted

技术标签:

【中文标题】带有 rxswift 的多张地图【英文标题】:multiple map with rxswift 【发布时间】:2018-12-31 12:52:03 【问题描述】:

我正在尝试从一个项目数组中为表格视图创建部分,其中每个数组项都是一个部分项。

我的问题是如何让cart.map 返回一个数组 CartProductSection ([CartProductSection]) 而不是将其分配给变量。谢谢。

我的代码 让购物车:BehaviorRelay 结构输出 让项目:Observable

           var sectionPerSupplierItems: [CartProductSection] = []

            _ = cart.map  (cart)  in 
                let cartItemsPerSupplier = self.sortModelItemPerSection(items: cart.items)

                print(cart.items.count)
                 _ = cartItemsPerSupplier.map   (cartItemsPerSupplier) in

                    var items: [CartProductSectionItem] = []
                    for cartItem in cartItemsPerSupplier.cartItems 
                         items.append(CartProductSectionItem.cartItem(viewModel: CartItemViewModel(with: cartItem)))
                    

                    sectionPerSupplierItems.append(CartProductSection.cartItemModel
(title: cartItemsPerSupplier.companyName, items: items))
                
            

            return Output(items: Observable.just(sectionPerSupplierItems))

【问题讨论】:

没有足够的上下文继续。 cart 的类型是什么?你在用RxDataSources吗?您希望将什么类型输入到表格视图中? 代码已更新,是的,我正在使用 rxdatasrouce。 【参考方案1】:

我可能会这样写代码(我仍然在这里做一堆假设。):

let items = cart
    .map  [unowned self] in self.sortModelItemPerSection(items: $0.items) 
    .map  cartItemsPerSuppliers in
        cartItemsPerSuppliers.map  CartProductSection.cartItemModel(from: $0) 
    
return Output(items: items)

以上假设存在这样的事情:

extension CartProductSection 
    static func cartItemModel(from supplier: CartItemsPerSupplier) -> CartProductSection 
        return cartItemModel(title: supplier.companyName, items: supplier.cartItems.map  CartProductSectionItem.cartItem(viewModel: CartItemViewModel(with: $0)) )
    

【讨论】:

另外,如果我正在写这篇文章,我会将sortModelItemPerSection(items:) 移出课堂,这样我就不必引用self 谢谢!我必须从中学习新东西:)。新年快乐!

以上是关于带有 rxswift 的多张地图的主要内容,如果未能解决你的问题,请参考以下文章

地图中的 RxSwift 多个可观察对象

带有 RxSwift 的 UIRefreshControl

带有 UiTextField 的 RxSwift

带有 UITextFieldDelegate 的 RxSwift 控制事件

带有 RxSwift 的 MVVM

RxSwift:返回一个带有错误的新可观察对象