Ios 使用RxSwift观察Swift 3中的阵列

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,

要在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, 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中的值复制到同一文件中的另一个数组,该怎么办?