我想将日期显示为部分标题并按照日期对消息进行分组。 我想使用RxDatasource库,并且无法创建SectionModel直接向数据源提供数据。如何使用RxSwift的Groupby运算符将GroupedObservable <String,Message>转换为SectionModel <String,Message>?
let source = sut.results.asObservable().map { result -> Observable<Message> in
switch result {
case .success(let messages):
return Observable.from(messages)
default:
break
}
return Observable.from([Message]())
}
.flatMap { $0 }
let group = source.groupBy { $0.date.dateOnly }
group.subscribe(onNext: {
print($0)
}).disposed(by: disposeBag)
下面是输出我在日志中得到:
GroupedObservable<String, Message>(key: "2017-01-01", source: RxSwift.(GroupedObservableImpl in _FBBDBB31E5DDAA1ED24286DA8D9FFB1F)<Swift.String, Tacos.Message>)
GroupedObservable<String, Message>(key: "2017-01-02", source: RxSwift.(GroupedObservableImpl in _FBBDBB31E5DDAA1ED24286DA8D9FFB1F)<Swift.String, Tacos.Message>)
我无法找出改造GroupedObservable<String, Message>
=>Observable<SectionModel<String,Message>>
将其转化为Message
的JSON是这样的如图所示: json description here
toArray()仅在获得Completed事件时才有效 – ahsumra