RxSwift наблюдает за изменением массива только при добавлении нового элемента - PullRequest
0 голосов
/ 09 июня 2018

Можно ли подписаться на изменение массива только при добавлении нового элемента?

Поэтому я хочу, чтобы следующее замыкание выполнялось только при добавлении нового элемента.

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

}).disposed(by: self.bag)

Если, например, элемент удален из этого массива, я не хочу, чтобы это замыкание выполнялось.

РЕДАКТИРОВАТЬ:

Есть ли способ, чтобы только новые элементы добавлялись в замыкание?В моем случае я добавляю подпоследовательности различной длины, поэтому я не могу просто посмотреть на последний элемент массива внутри замыкания.

Ответы [ 2 ]

0 голосов
/ 06 августа 2018

В этом случае вы должны уйти в отставку с помощью переменной и использовать темы.Я думаю, что ваши требования должны соответствовать PublishSubject:

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

Когда вы добавляете новые элементы в subjectArray, только те новые элементы будут напечатаны.

0 голосов
/ 10 июня 2018

Может быть, что-то вроде этого

 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
...