Ios 使用RxSwift观察Swift 3中的阵列
要在Swift 2中使用Ios 使用RxSwift观察Swift 3中的阵列,ios,swift,rx-swift,reactivex,Ios,Swift,Rx Swift,Reactivex,要在Swift 2中使用RxSwift创建可观测数组,我使用以下方法: [1, 2, 3].toObservable().subscribeNext { print($0) } 但是在Swift 3中,它不再工作了,我得到了一个错误: “[Int]”类型的值没有成员“toObservable” 如何从swift数组创建RxSwift可观察数组?在swift 3中使用RxSwift 3.0我将这样做: var array: Variable<[Int]> = Variable([1,
RxSwift
创建可观测数组,我使用以下方法:
[1, 2, 3].toObservable().subscribeNext { print($0) }
但是在Swift 3中,它不再工作了,我得到了一个错误:
“[Int]”类型的值没有成员“toObservable”
如何从swift数组创建
RxSwift
可观察数组?在swift 3中使用RxSwift 3.0
我将这样做:
var array: Variable<[Int]> = Variable([1, 2, 3])
array.asObservable().subscribe(onNext: {
updatedArray in
print(updatedArray)
})
array.value.append(4) // it will trigger `onNext` event
var数组:变量=变量([1,2,3])
array.asObservable().subscribe(onNext:{
更新阵列
打印(更新阵列)
})
array.value.append(4)//它将触发`onNext`事件
因此,主要的区别在于您必须创建一个
变量
对象,而不是使用显式数组。不推荐使用toObservable
数组到Observable构造函数
创造一个寒冷的环境
使用from
操作符创建冷可观察:
let stream : Observable<Int> = Observable.from([1,2,3])
调用from
或just
操作符时的数组元素将是onNext
事件的最终排放集,并将以onCompleted
事件结束。对数组的更改不会被识别为此可观察序列的新事件
这意味着,如果您不需要监听该数组上的更改,您可以使用just
和from
操作符来创建可观察的
let singleEmissionStream : Observable<[Int]> = Observable.just([1,2,3])
但是如果我需要监听数组元素的变化呢?
要观察数组[E]
上的变化,需要使用类似于变量
的RxSwift单元,如k8mil在回答中所指定。您将有一个Variable
类型的实例,其中每个onNext
发射都是阵列的当前状态
冷和热之间的区别是什么?
冷观测和热观测之间的区别在和的文件中进行了解释。下面是冷态观测与热态观测对比的简短描述
冷观测值在订阅时开始运行,即,可观测序列仅在调用订阅时开始将值推送到观测值。[…]这不同于热观测,例如鼠标移动事件或股票行情,它们甚至在订阅激活之前就已经产生了价值
来自的
和just
操作符在代码运行时获取阵列的当前状态,从而最终确定它将为其可观察序列触发的发射集,无论何时订阅。这就是为什么以后对阵列中元素集的更改不会更改在使用from
或just
操作符创建可观察对象期间识别为发射的元素集。您确定创建的流会正常工作吗?我已经测试过了,阵列上的更改不会触发任何事件。你能为订阅提供一些代码吗?谢谢你可以看看我的密码:嗨,我一定是看错了问题。我认为问题在于如何从类型为[E]
的快速数组中获得一个可观察的。它没有具体说明这是热观测还是冷观测。我将注意到,我提出的方法是一种冷可观察的方法,并解释它与使用变量的热可观察实现的区别。如果要将UpdateArray中的值复制到同一文件中的另一个数组,该怎么办?