簡體   English   中英

RxSwift僅在附加新元素時觀察數組更改

[英]RxSwift observe array change only when appended new element

有沒有辦法只在附加新元素時訂閱數組更改?

所以我希望只有在追加新元素時才執行以下閉包。

array.asObservable().subscribe(onNext: { array in

}).disposed(by: self.bag)

例如,如果從該數組中刪除了一個元素,我不希望執行此閉包。

編輯:

有沒有辦法在閉包中只有新附加的元素? 在我的情況下,我追加各種長度的子序列,所以我不能只看到閉包內數組的最后一個元素。

也許這樣的事情

 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

在這種情況下,您應該使用Variable進行辭職並使用Subjects。 我認為,您的要求應符合PublishSubject:

let subjectArray = PublishSubject<[Int]>([])
array.asObservable().subscribe(onNext: {
            print($0)
        }).disposed(by: disposeBag)

向subjectArray添加新元素時,只會打印新元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM