Ios 如何去掉RxSwift中变量的初始值

Ios 如何去掉RxSwift中变量的初始值,ios,rx-swift,Ios,Rx Swift,我一直在研究RxSwift,我在RxSwift中使用了一个变量,该变量连接(绑定)到UICollectionView。现在知道变量是从行为主体扩展而来的,我必须创建一个带有虚拟初始值的变量 var myArray = Variable<[MyDataModel]>([MyDataModel(data: "{:}")]) 虽然上面的代码可以工作,但它部分地解决了这个问题。虽然myArray的值中的第一个更改被忽略,但是当我将实际数据附加到myArray之后使用 myArray.va

我一直在研究RxSwift,我在RxSwift中使用了一个
变量
,该变量连接(绑定)到
UICollectionView
。现在知道
变量
是从
行为主体
扩展而来的,我必须创建一个带有虚拟初始值的
变量

 var myArray = Variable<[MyDataModel]>([MyDataModel(data: "{:}")])
虽然上面的代码可以工作,但它部分地解决了这个问题。虽然
myArray
值中的第一个更改被忽略,但是当我将实际数据附加到
myArray
之后使用

myArray.value.append(someNewData)
它发出通知,不幸的是,这次
myArray.value
有两个值(一个是初始化时添加的伪值,另一个是实际触发的
onNext

因此,作为一种解决方法,我要做的是在盲目地将数据附加到myArray.value之前检查它是否添加了虚拟对象,如果是,则删除它并添加实际对象

虽然“变通”是可行的,但这会让我的代码看起来非常难看,而且在某种程度上不是Rx。我相信必须有一个适当的方法来处理它,因为这是使用
变量
的一个非常基本的问题

我非常感谢您对这一点的看法。

首先,RxSwift 4.x中不推荐使用变量,而支持行为规则


但是出于您的目的,PublishSubject或BehaviorSubject(如果您需要缓存最新的值)就足够了。

我使用的是RxSwift 4.0,我没有看到任何针对变量的弃用警告,我检查了源代码,也没有添加任何弃用。您确定RxSwift4中不推荐使用该变量吗?第二,我不能使用Publush,行为主题,因为两者都可能因错误或已完成事件而终止。但从概念上讲,它是一个绑定到collectionView数据源的变量,不能以错误结尾或已完成状态。我知道我可以将asDriver()用于发布/行为,但思想变量正是出于这个原因,它自己看到了True中的最后一个项目符号,我看到了。我需要从kzaher那里确认一下,我猜也是这样:(谢谢你让我知道变量折旧。+1记录错误/完成-这取决于你如何将数据放入主题,如果你只调用.onNext(),那么你是安全的。如果是连续的服务调用,我宁愿将请求放入可观察的主题(原文如此)并将.switchLatestDelayError()绑定到UI。
myArray.value.append(someNewData)