有没有办法只在附加新元素时订阅数组更改?
所以我希望只有在追加新元素时才执行以下闭包。
str_replace_all(text_line, " *\\([^\\)]*\\)", "")
例如,如果从该数组中删除了一个元素,我不希望执行此闭包。
修改
有没有办法在闭包中只有新附加的元素?在我的情况下,我追加各种长度的子序列,所以我不能只看到闭包内数组的最后一个元素。
答案 0 :(得分:3)
也许是这样的
let array = Variable<[Int]>([])
array.asObservable().distinctUntilChanged { $0.count > $1.count}.subscribe(onNext: {
print($0)
}).disposed(by: disposeBag)
array.value.append(1) //called
array.value.append(2) //called
array.value.remove(at: 0) //not called
array.value.append(3) //called
答案 1 :(得分:0)
在这种情况下,您应该使用Variable辞职并使用Subjects。我认为您的要求应符合PublishSubject:
let subjectArray = PublishSubject<[Int]>([])
array.asObservable().subscribe(onNext: {
print($0)
}).disposed(by: disposeBag)
将新元素添加到subjectArray时,只会打印新元素。