RxSwift 5.1中已废弃的Variable类型的替代方案是什么
RxSwift 5.1 中Variable的替代方案
RxSwift 5.0之后官方完全废弃了Variable类型,5.1版本的官方推荐替代方案是BehaviorRelay,该类型属于RxCocoa库组件,完全对齐Variable的无error/无completed事件、自动保留最新值的特性。
原有代码改造示例
原有RxSwift 3.x中的Variable使用代码:
let overwatch = Game(price: Variable(value: 59.99)) overwatch.price.value = 12
改造为RxSwift 5.1的BehaviorRelay版本:
- 首先确保导入RxCocoa依赖
import RxCocoa - 修改属性类型与赋值逻辑
// Game类中的price属性类型从Variable<Double>调整为BehaviorRelay<Double> let overwatch = Game(price: BehaviorRelay<Double>(value: 59.99)) // 原直接修改value的写法替换为调用accept方法 overwatch.price.accept(12)
使用注意事项
- 读取当前存储值的逻辑和Variable完全一致,直接调用
overwatch.price.value即可获取最新值 BehaviorRelay不会主动发送error、completed事件,只会随持有者销毁自动终止序列,和Variable的行为特性100%匹配- 如果你的业务场景不需要保留历史最新值,仅需要透传事件,可以选择
PublishRelay作为PublishSubject的无错误版本替代
内容的提问来源于stack exchange,提问作者sorw992
相关产品推荐
相关产品推荐

