作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在观察BehaviorRelay,并且仅在项目数量增加时才想订阅。我尝试了distinct / dinstinctUntilChanged ,但它不符合我的需求,因为它将跳过太多或太少的次数。
behaviorRelay
.compactMap { $0?.items }
.subscribe(onNext: { elements in
print("items has one more element.")
}).disposed(by: bag)
var behaviorRelay = BehaviorRelay<[Car]?>(value: [])
class Car {
var items: [Any] // whatever... just an example.
}
最佳答案
首先,使用map
从数组映射到数字(元素):
.map { $0?.count ?? 0 } // return 0 if array is nil
scan
检索当前元素和上一个元素,如下所示:
.scan((0, 0)) { previousPairOfValues, newValue in
return (previousPairOfValues.1, newValue) // create new pair from newValue and second item of previous pair
}
filter
,仅传递递增的值:
.filter { $0.1 > $0.0 } // newer value greater than older value
.map { $0.1 }
behaviorRelay
.compactMap { $0?.items }
.map { $0?.count ?? 0 } // return 0 if array is nil
.scan((0, 0)) { previousPairOfValues, newValue in
return (previousPairOfValues.1, newValue) // create new pair from newValue and second item of previous pair
}
.filter { $0.1 > $0.0 } // newer value greater than older value
.map { $0.1 }
.subscribe(onNext: { elementCount in
print("items has one more element.")
print("there are \(elementCount) items now")
}).disposed(by: bag)
关于ios - 如何忽略RxSwift上的behaviorRelayRelay元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59815298/
我是一名优秀的程序员,十分优秀!