RxSwift仅在附加新元素时观察数组更改

时间:2018-06-09 17:08:30

标签: ios swift rx-swift

有没有办法只在附加新元素时订阅数组更改?

所以我希望只有在追加新元素时才执行以下闭包。

str_replace_all(text_line, " *\\([^\\)]*\\)", "")

例如,如果从该数组中删除了一个元素,我不希望执行此闭包。

修改

有没有办法在闭包中只有新附加的元素?在我的情况下,我追加各种长度的子序列,所以我不能只看到闭包内数组的最后一个元素。

2 个答案:

答案 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时,只会打印新元素。