带有 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 的多张地图的主要内容,如果未能解决你的问题,请参考以下文章