Пропустить (пока :) вызов против Сигнала в ReactiveSwift игнорируется - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть наблюдатель против сигнала, который производит подсчет предметов в моем приложении. В идеале я хотел бы пропустить все значения 0, что я пытался сделать, используя следующий фрагмент кода:

viewModel.itemCount.signal
    .skipRepeats()
    .skip(while: { itemCount -> Bool in return itemCount == 0 })
    .observeValues { itemCount in
        print("Item count: \(itemCount)") // Will still print 0
}

К сожалению, он по-прежнему допускает прохождение значения 0.

1 Ответ

0 голосов
/ 04 сентября 2018

Так что мой подход был неверным, так как skip(while:) применяется только при начале сигнала. Поскольку начальное значение удовлетворяло его критериям, сигнал был разрешен для продолжения, и проверка skip(while:) в дальнейшем игнорировалась.

Правильный вызов - это команда filter(:), как показано здесь:

.filter({ itemCount -> Bool in return itemCount != 0 })

Использование фильтра не влияет на сигнал, вместо этого сосредотачиваясь на том, следует ли вам наблюдать переданное значение.

...