RxSwift的目的是简化异步操作和事件/数据流的组合。仅将此标记用于特定于RxSwift - Reactive Programming范例的问题,或者需要使用该语言代码的问题。使用相关标签[ios],[osx],[apple-watch],[cocoa-touch]和[cocoa]来获取有关平台或框架的(语言无关)问题。
更新第一个可见单元格的内容时,CollectionView 中的最后一个可见单元格消失
我使用 RxDataSources 时有一个奇怪的行为。我正在使用 RxCollectionViewSectionedAnimatedDataSource。我在集合视图中的每个单元格内都有一个按钮,它显示了一些内容。这个骗局...
此代码使用 RxSwift 导入 RxSwift 结构输入{ 让 loadTrigger: Observable } 协议用例{ func getEventsLists() -> Observable<[EventsList]> 功能
我是 Rxswift 的新手,我遇到了一个问题 我有一个 Observable,我在 viewDidLoad 中进行绑定\订阅,屏幕被重复使用,所以每次 viewDidloa 都会发生订阅...
RxCocoa/RxSwift 在访问 TableViewDataSourceNotSet tableView(_:cellForRowAt:) 时崩溃
我正在使用 RxCocoa 和 RxSwift 根据 BehaviorRelay 提供的数组呈现 UITableView。绑定数据的代码如下: // 我的视图模型: var itemList = BehaviorRelay(值: [MyItem](...
使用 RxDatasources 作为数据源时如何填充自定义页眉/页脚视图
我正在使用 RxDatasources 创建我的数据源。稍后,我在我的视图控制器中配置单元格。问题是,因为页眉/页脚与数据源无关(除了我们可以设置标题,但是......
func someCompletable() -> Completable { 返回 Completable.create { 观察者 观察员(.完成) 返回 Disposables.create() } } 让 buttonDidTap = PublishRelay func someCompletable() -> Completable { return Completable.create { observer in observer(.completed) return Disposables.create() } } let buttonDidTap = PublishRelay<Void>() buttonDidTap .debug() .subscribe() .disposed(by: disposeBag) 我看到在点击 buttonDidTap 时触发了 next() 事件。 但是,当我通过 flatMap 将其转换为 Completable 类型时,flatMap 之后没有发出任何事件。 buttonDidTap .flatMap { self.someCompletable() } .debug() .subscribe() .disposed(by: disposeBag) 我也试过订阅所有事件 onNext、onCompletable、onError 和 onDisposed,但它们都没有发出。 知道这是为什么吗? 这是一个 gif 运行屏幕 :https://user-images.githubusercontent.com/57667738/229386647-c061d185-2015-40af-9150-5daac58c47ec.gif buttonDidTap .debug() //onNext event fired .flatMap { self.someCompletable() } .debug() //no event fired .subscribe() .disposed(by: disposeBag) 我的猜测是flatMap在将Completable转换为Observable的过程中失去了Completable的特性,还原为Observable的形式。 因此,对 onCompleted 的调用似乎消失了。 我该如何解决这个问题? flatMap 在它跟随的每个可观察对象完成之前无法完成。否则它将无法响应任何更多事件。例如,下次点击按钮时。 所以当 completable 发出一个 completed 事件时,flatMap 应该做什么? 它不能发出下一个事件,因为可完成的没有发出下一个事件。 它不能发出错误事件,因为没有错误。如果可完成的 did 发出错误,那么它可以。 它无法发出已完成的事件,因为它仍在监视按钮点击以获取更多下一个事件。 出于这个原因,您看不到任何事件从 flatMap 中发出(直到链上游进一步发出错误或所有可完成的订阅和可观察到的按钮点击已完成。) 如果您想知道可完成事件何时真正完成,您需要将已完成的事件转换为下一个事件。例如: buttonDidTap .flatMap { someCompletable.andThen(Observable.just(())) } 这样,每次 .next(()) 完成时,从 flatMap 返回的 observable 都会发出一个 someCompletable 事件。 另外 您发布的代码: buttonDidTap .debug() //onNext event fired .flatMap { self.someCompletable() } .debug() //no event fired .subscribe() .disposed(by: disposeBag) 可能有一个保留周期。由于传递给 flatMap 的闭包保留了 self 并且 disposeBag 由 self 保留。这意味着self切向保留自己。 要删除循环,请在闭包外部创建 Completable: let completable = someCompletable() buttonDidTap .debug() //onNext event fired .flatMap { completable } .debug() //no event fired .subscribe() .disposed(by: disposeBag) 之所以可行,是因为每次订阅 Completable 时,它都会调用您传递给其构造函数的闭包。
我有一个整数流,我需要使用一个结构来处理,该结构使用 CurrentValueSubject 来知道是否允许它进行处理。由于 CurrentValueSubject 不...
为 RxPickerViewAttributedStringAdapter 创建一个完成按钮
self.genderSource = RxPickerViewAttributedStringAdapter<[[DKProfileOption]]>.init(components:[]) { dataSource, pickerView, components in 返回 1 } numberOfRowsInComponent: { [弱自我] 数据...
如何在 RxSwift 中将 Observable<Type> 转换为 Single<Type>?
我目前有一个返回 observable 的方法。但是,它只返回一个元素。 func getMyResponse(queryID: String) -> Observable { 返回可观察 } 我是
RxSwift Alamofire Session - 错误 - 表达式类型不明确,没有更多上下文
我尝试创建一个可观察的请求。但我错过了一些东西。我不明白缺少什么? 我和这个文档、这个、这个等做了同样的事情。 func performRequest(路线:
在“PrimitiveSequence”上引用实例方法“xxx”需要类型“A”和“any B”等效
我们需要一些建议。我正在尝试做这样的抽象,所以我有很多不同的响应。在项目的某个时候,我们意识到我们的一些 Responses 具有 id 属性,我们想制作 s...
我有一系列设备,我想尝试连接到其中一个设备,如果成功停止尝试连接到其他设备并返回 onCompleted,如果连接失败...
RXSwift - RxCollectionViewSectionedReloadDataSource - 拖放移动(重新排序)
我已经使用 RxCollectionViewSectionedReloadDataSource 将我的数据加载到 UICollectionView 中。 让 dataSource = RxCollectionViewSectionedReloadDataSource>(...
在 RxSwift 中使用 Observable zip 时如何处理多个 API 调用的成功案例和失败案例
我使用 Obeservable.zip() 调用了两个独立的 API 调用。在这种情况下,如果第一个 API 失败(返回某种错误),第二个 API 永远不会在 subscribe(onNext) 闭包内执行,甚至...
在 RxSwift 中使用 Observable zip 时如何处理成功案例和失败案例
我使用 Obeservable.zip() 调用了两个独立的 API 调用。在这种情况下,如果第一个 API 失败(返回某种错误),第二个 API 永远不会在 subscribe(onNext) 闭包内执行,甚至...
所以我正在使用 RxSwift 并具有如下所示的功能: private func setAndVerifyTestmode(isOn: Bool) { parameterService.setTestMode(value: isOn) .flatMap { _ 在 self.parameterService.
如何根据选定的 UIButtons 创建 RxSwift 序列?
我是 RxSwift 的新手。 我在屏幕上有 3 个 UIControl。选择一个或所有控件应启用屏幕底部的“下一步”UIButton。 我不明白如何: 如何创建...
rxSwift 版本: pod 'RxSwift', '6.2.0' pod 'RxCocoa', '6.2.0' TrueBtn.rx.tap.throttle(.seconds(5),调度程序:MainScheduler.instance) .subscribe(onNext: { [weak self] in print("TrueBtn-true&...
我有一个接收 Publisher 并创建用于两者的 PassthroughSubject 的函数: 订阅源发布者 手动发送值 例如。: 类适配器{ 让
Swift Combine : 订阅在源发布者完成时取消主题
我有一个接收 Publisher 并创建用于两者的 PassthroughSubject 的函数: 订阅源发布者 手动发送值 例如: 类适配器{ 让