Ios 如何忽略RxSwift上的行为相关性元素删除?
我正在观察一个行为规则,我只想在项目数量增加时订阅。我尝试了distinct/dinstinctUntilChanged,但它不适合我的需要,因为它会跳过太多或太少次Ios 如何忽略RxSwift上的行为相关性元素删除?,ios,swift,rx-swift,Ios,Swift,Rx Swift,我正在观察一个行为规则,我只想在项目数量增加时订阅。我尝试了distinct/dinstinctUntilChanged,但它不适合我的需要,因为它会跳过太多或太少次 behaviorRelay .compactMap { $0?.items } .subscribe(onNext: { elements in print("items has one more element.") }).disposed(by: bag) var behaviorRelay=beha
behaviorRelay
.compactMap { $0?.items }
.subscribe(onNext: { elements in
print("items has one more element.")
}).disposed(by: bag)
var behaviorRelay=behaviorRelay(值:[])
首先,使用
map
将数组映射到(元素的)个数:
.map{$0?.count±0}//如果数组为零,则返回0
然后使用scan
,检索当前和以前的元素,如下所示:
.scan((0,0)){previousPairOfValues,newValue in
return(previousPairOfValues.1,newValue)//从newValue和前一对的第二项创建新对
}
然后使用过滤器
,只传递递增的值:
.filter{$0.1>$0.0}//新值大于旧值
然后将其映射回最新值:
.map{$0.1}
综合起来:
behaviorRelay
.compactMap{$0?.items}
.map{$0?.count±0}//如果数组为nil,则返回0
.scan((0,0)){previousPairOfValues,newValue in
return(previousPairOfValues.1,newValue)//从newValue和前一对的第二项创建新对
}
.filter{$0.1>$0.0}//新值大于旧值
.map{$0.1}
.subscribe(onNext:{elementCount in
打印(“项目还有一个元素。”)
打印(“现在有\(elementCount)项”)
}).处置(由:袋)
首先,使用映射
从数组映射到(元素的)个数:
.map{$0?.count±0}//如果数组为零,则返回0
然后使用scan
,检索当前和以前的元素,如下所示:
.scan((0,0)){previousPairOfValues,newValue in
return(previousPairOfValues.1,newValue)//从newValue和前一对的第二项创建新对
}
然后使用过滤器
,只传递递增的值:
.filter{$0.1>$0.0}//新值大于旧值
然后将其映射回最新值:
.map{$0.1}
综合起来:
behaviorRelay
.compactMap{$0?.items}
.map{$0?.count±0}//如果数组为nil,则返回0
.scan((0,0)){previousPairOfValues,newValue in
return(previousPairOfValues.1,newValue)//从newValue和前一对的第二项创建新对
}
.filter{$0.1>$0.0}//新值大于旧值
.map{$0.1}
.subscribe(onNext:{elementCount in
打印(“项目还有一个元素。”)
打印(“现在有\(elementCount)项”)
}).处置(由:袋)
如果数组中有5个项目,则删除一个项目,然后添加一个项目,这算不算,或者如果数组中有6个项目,您是否只希望收到通知?@DanielT。这是肯定的。关键是忽略减少,而不是附加。如果数组中有5个项目,则删除一个项目,然后添加一个项目,这算不算,或者如果数组中有6个项目,您是否只希望收到通知?@DanielT。这是肯定的。关键是要忽略减少,而不是附加。
class Car {
var items: [Any] // whatever... just an example.
}