草庐IT

Rxswift3

全部标签

ios - RxSwift。依次执行单独的 Observables

我试图让我的Observable仅在前一个Observable完成时才执行。我不能使用flatMap,因为订阅可以从不同的地方调用,而且这个Observables之间没有联系。具体来说:我让我的CollectionView从服务器加载更多内容,并在该用户单击“发送评论”按钮后2秒,而CollectionView仍在加载其批处理。所以我想等到CollectionView更新完成,然后才执行我的评论的发布请求。我创建了一个名为ObservableQueue的类,它工作得很好。但我需要知道它是否存在内存泄漏、死锁等问题,或者我只是遗漏了什么。在这里:extensionCompositeDis

swift - RxSwift BehaviorRelay 取消之前的调用,只使用最近的

我有一个BehaviorRelay设置来存储地址数组,然后我观察那个BehaviorRelay以便我可以创建一个MKAnnotation数组然后将其显示在map上。letaddresses=BehaviorRelay(value:[])当用户将map移动到新区域时,我会发出网络请求。如果用户移动map的速度非常快,我可能会收到多个网络请求我只想要最新的回复。这就是我的问题开始的地方。addresses.asObservable().subscribe(onNext:{[unownedself](value)inself.fetchAllAnnotationsAndAddToMap()}

swift - RxSwift 可观察数组排序

我正在尝试对可观察数组进行排序,但运气不好(RxSwiftn00b)letitems=[AnyObject]?letlocations=Observable.just(items)我想在位置上实现这样的目标items.sortInPlace({$0.name任何指点将不胜感激! 最佳答案 这是我的解决方案Observable.just(items).map({(items)->[AnyObject]inreturnitems.sorted(by:{(item1,item2)->Boolinreturnitem1.name

ios - RxSwift - 一个 Observable 中的多个 Observable 值

我想做一个像这个例子的函数。示例letnum1=Driverletnum2=Driverletresult=Drivernum1=Observable.just(...).asDriver()num2=Observable.just(...).asDriver()result=???//Whenbothnum1andnum2aresubscribed,thisbecomesahighervalueamongthemasString.//Thistypeofcodewillbeused/*if$0>=$1{return"num1=\($0)"}else{return"num2=\($1)

ios - 如何使用 RxSwift 观察 Bool 属性?

我的VC.swift中有两个Bool属性:varisRecording=falsevarisPlaying=false在viewDidLoad()方法中我有这样的代码:letobservable=Observable.combineLatest(self.rx_observe(Bool.self,"isRecording"),self.rx_observe(Bool.self,"isPlaying")){(val1,val2)->Voidinif(val1==false&&val2==false){self.recordButton.enabled=trueself.playButto

ios - RxSwift。结合最新。不是所有的可观察物都发出

Observable.combineLatest(...){...}包含多个可观察值,但其中一些未发出。combineLatest仅在发出此方法中的所有可观察值时发出。如何跳过未发出的可观察对象并发出combineLatest?lettap=firstButton.rx.tap.asObservable().map{(_)->Observable...}lettextfieldObservable=viewTextField.rx.text.orEmpty.asObservable()submitButton.rx.tap.withLatestFrom(Observable.combi

swift - 如何使用 RxSwift 处理应用程序状态

我是RxSwift和RX的整个概念的新手,我想知道如何处理RxSwift从远程服务器获取的全局应用程序状态。假设我需要获取JSON并将其解析为对象列表以在TableView中显示它,而且我还需要创建格式为[{id:object},...]的map在应用程序的其他部分使用数据。例如:应用程序重复从服务器获取人员列表,并且需要人员TableView的数据以及人员消息以显示头像和状态以及相关消息。因此,View模型PersonViewModel和由模型Person和Message组成的MessageViewModel需要数据。将是拥有这种结构的正确方法:structPerson{letid:

swift - 使用 rxSwift 绑定(bind)数据时内存泄漏

当我尝试绑定(bind)我的UITextField时这是在我的ViewController带变量varlocation=Variable("")这是在我的ViewControllerViewModel使用rxSwift我收到有关内存泄漏的信息。我这样做如下:MyViewControllerclassViewController{@IBOutletweakvarlocationTextField:UITextField!varviewControllerViewModel:ViewControllerViewModel?lazyvardisposeBag=DisposeBag()/*An

swift - RxSwift。 Observable<Void> 使用什么?

在MVVM上编写项目并尝试将所有内容与RxSwift绑定(bind)。不幸的是,我没能找到一种正确的方法来绑定(bind)Action。例如,我有一个表格和一个带有一个按钮的简单单元格-“选择”。为此,我将有两个View模型:ListViewModel和CellViewModelListViewModel将创建一个CellViewModel数组,并且需要订阅选择事件(自定义事件)。现在我为此目的使用BehaviorSubject,但它看起来很丑。谁能告诉我如何使用RxSwift来实现它?classCellViewModel{privateletselectionSubject=Beha

swift - 用 RxSwift 实现去抖缓冲区,这对吗?

我对RxSwift比较陌生,但我期待在我的项目中更多地使用它,我很想听听对我刚刚编写的运算符的一些反馈。我缺少的功能是去jitterbuffer:一个行为与debounce运算符完全相同的缓冲区,但不是仅发出最新值,它应该发出自上次发出以来收集的所有值。在RxJava中,这很容易通过使用带有另一个可观察对象的缓冲区作为“关闭选择器”来实现://From:https://github.com/ReactiveX/RxJava/wiki/Backpressure////wehavetomulticasttheoriginalburstyObservablesowecanuseit//bot