gpt4 book ai didi

swift - 如何合并 String 和 Int 以获得一个 flatMap

转载 作者:行者123 更新时间:2023-11-28 14:05:34 26 4
gpt4 key购买 nike

enum Input { case text(String); case page(Int) }

我正在使用 API 方法的关键字搜索来管理分页。现在我可以传递关键字或页码,但不能在 Rx 中同时传递。

我在一些现有的可用要点的帮助下编写了以下代码

    let start = Observable.merge(reload, loadNext)

let stringObservable = keyword.asObservable().map { Input.text($0) }
let intObservable = start.asObservable().map { Input.page($0) }

let request_call = Observable.of(stringObservable, intObservable).merge()
let page = request_call
.flatMap { input in
Observable.combineLatest(Observable.just($0), api.loadData(page: $0, keyword: "breaking")) { (pageNumber: $0, items: $1) }
.materialize()
.filter { $0.isCompleted == false }
}
.share()

start保留页码,&keyword保留搜索关键词。

我需要合并两者,我确实使用了 ENUM & Merge,

现在我必须调用 API,但显示为输入,

那么如何在一个 flatMap 中获取两个值

最佳答案

去掉 Input枚举并使用 combineLatest而不是合并。

然后 request_call将是 Observable<(String, Int)>您可以在 loadData 中使用这两个值功能。

let start = Observable.merge(reload, loadNext)

let stringObservable = keyword.asObservable()
let intObservable = start.asObservable()

let request_call = Observable.combineLatest(stringObservable, intObservable)
let page = request_call
.flatMap { text, page in
Observable.combineLatest(Observable.just(page), api.loadData(page: page, keyword: text)) { (pageNumber: $0, items: $1) }
.materialize()
.filter { $0.isCompleted == false }
}
.share()

关于swift - 如何合并 String 和 Int 以获得一个 flatMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53015654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com