【问题标题】:RxSwift : BehaviorRelay in place of Variable usageRxSwift : BehaviorRelay 代替变量使用
【发布时间】: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 个操作?

【问题讨论】:

    标签: ios arrays swift rx-swift


    【解决方案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 接受会更公平:) 无论如何都是正确的。
      猜你喜欢
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      相关资源
      最近更新 更多