RxSwift : BehaviorRelay 代替变量使用
Posted
技术标签:
【中文标题】RxSwift : BehaviorRelay 代替变量使用【英文标题】:RxSwift : BehaviorRelay in place of Variable usage 【发布时间】:2018-10-13 12:53:29 【问题描述】:我是 RxSwift 的新手,正在阅读主题,我尝试过 Variable
主题。依次在控制台中发出警告
ℹ️ [DEPRECATED] `Variable` is planned for future deprecation. Please consider `BehaviorRelay` as a replacement. Read more at: https://git.io/vNqvx
之前我已经这样声明Variable
var searchItems = Variable<[MyClass]>([])
所以我已经从它的属性value
完成了基本的数组操作,因为它是get set
属性,就像
1. self.searchItems.value.removeAll()
2. self.searchItems.value.append(items)
3. self.searchItems.value = items
现在收到警告后,我将其更改为 BehaviorRelay
喜欢
var searchItems = BehaviorRelay<[MyClass]>(value: [])
所以我得到了错误,value is get property only。
我用谷歌搜索了很多,但无法获得有关数组操作的合适解释。
我只有一个代码self.searchItems.accept(items)
,我真的不知道它究竟是做什么添加新鲜项目或追加。
我需要在使用 BehaviorRelay
时如何执行所有 4 个操作?
【问题讨论】:
【参考方案1】:1) 全部删除
var array = self.searchItems.value
array.removeAll()
self.searchItems.accept(array)
2) 附加项目
self.searchItems.value.accept(searchItems + [items])
3) 价值 = ...
self.searchItems.value.accept(items)
【讨论】:
【参考方案2】:使用accept
。
var value = searchItems.value
value.removeAll()
searchItems.accept(value)
等等……
【讨论】:
这个答案在麦克斯韦之前 - TBH 接受会更公平:) 无论如何都是正确的。以上是关于RxSwift : BehaviorRelay 代替变量使用的主要内容,如果未能解决你的问题,请参考以下文章
可从多个 BehaviorRelay RxSwift 观察到
使用 Observable 绑定 BehaviorRelay - RxSwift
在 RxSwift 中修改 behaviorRelay 数组内的属性
RxSwift BehaviorRelay auto isDisposed