RxSwift:BehaviorRelay代替变量用法

Abh*_*yal 3 arrays ios swift rx-swift

我是RxSwift的新手,正在阅读有关主题的文章,因此尝试了VariableSubject。依次在控制台中发出警告

?? [DEPRECATED] `Variable` is planned for future deprecation. Please consider `BehaviorRelay` as a replacement. Read more at: https://git.io/vNqvx
Run Code Online (Sandbox Code Playgroud)

早些时候我宣布Variable这样的

var searchItems = Variable<[MyClass]>([])
Run Code Online (Sandbox Code Playgroud)

所以我已经从它的属性完成了基本的数组操作,value因为它get set就像

 1. self.searchItems.value.removeAll()
 2. self.searchItems.value.append(items)
 3. self.searchItems.value = items
Run Code Online (Sandbox Code Playgroud)

现在得到警告后,我将其更改为BehaviorRelay喜欢

var searchItems = BehaviorRelay<[MyClass]>(value: [])
Run Code Online (Sandbox Code Playgroud)

所以我得到一个错误,那就是值仅是属性

我在Google上搜索了很多,但无法获得有关Array操作的适当说明。

我只有一个代码self.searchItems.accept(items),我真的不知道它究竟是什么添加新项目或追加。

我需要在使用时如何执行所有4种操作BehaviorRelay

Dan*_* T. 5

使用accept

var value = searchItems.value
value.removeAll()
searchItems.accept(value)
Run Code Online (Sandbox Code Playgroud)

等等...


max*_*ell 5

1)全部删除

var array = self.searchItems.value
array.removeAll()
self.searchItems.accept(array)
Run Code Online (Sandbox Code Playgroud)

2)追加项目

self.searchItems.value.accept(searchItems + [items])
Run Code Online (Sandbox Code Playgroud)

3)值= ...

self.searchItems.value.accept(items)
Run Code Online (Sandbox Code Playgroud)