gpt4 book ai didi

ios - 使用 RxSwift 在 Swift 3 中观察数组

转载 作者:IT王子 更新时间:2023-10-29 05:46:32 29 4
gpt4 key购买 nike

要在 Swift 2 中使用 RxSwift 创建一个可观察数组,我曾经这样做:

[1, 2, 3].toObservable().subscribeNext { print($0) }

但在 Swift 3 中,它不再起作用,我得到了这个错误:

Value of type '[Int]' has no member 'toObservable'

如何从 swift 数组创建 RxSwift 可观察数组?

最佳答案

toObservable array-to-Observable 构造函数已弃用。

创建冷可观察对象

使用 from运算符而不是创建一个冷的可观察对象:

let stream : Observable<Int> = Observable.from([1,2,3])

或者如果您需要整个数组作为条目,请使用 just运算符创建冷可观察对象。

let singleEmissionStream : Observable<[Int]> = Observable.just([1,2,3])

Elements of the array at the time that the from or just operator is called will be final set of emissions on the onNext events and will end with an onCompleted event. Changes to the array will not be recognized as new events for this observable sequence.

这意味着如果你不需要监听那个数组的变化,你可以使用 justfrom运算符来创建可观察对象。

但是如果我需要监听数组元素的变化怎么办?

观察数组的变化 [E] , 你需要使用 hot observable喜欢 Variable RxSwift 单位,如 k8mil 的答案中所指定。您将拥有一个 Variable<[E]> 类型的实例其中每个onNext emission 是阵列的当前状态。

冷和热 Observable 之间有什么区别?

RxSwift 的文档中解释了冷和热可观察对象之间的区别。在reactivex.io .下面是冷可观察量与热可观察量对比的简短描述。

Cold observables start running upon subscription, i.e., the observable sequence only starts pushing values to the observers when Subscribe is called. [...] This is different from hot observables such as mouse move events or stock tickers which are already producing values even before a subscription is active.

fromjust运算符在代码运行时获取数组的当前状态,从而最终确定它将为其可观察序列触发的发射集,无论它何时被订阅。这就是为什么稍后更改数组中的元素集不会更改在使用 from 创建可观察对象期间识别为发射的元素集。或 just运营商。

关于ios - 使用 RxSwift 在 Swift 3 中观察数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44832750/

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