2017-02-22 2 views
0

Так что я хотел бы сделать что-то действительно просто с RxSwift как доказательство концепции:Как вы подключаете кнопку к массиву в RxSwift?

  1. Crate наблюдаемым массив;
  2. Когда кнопка нажата, добавьте целое число в массив;
  3. Когда массив имеет> 10 элементов, пуст массив.

Это ум, омерзительно невозможный в RxSwift, если вы noob.

Thx.

ответ

1

Начните с выходов первым, а затем определите, как ваши входы изменяют ваш выход.

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

Итак, давайте начнем, имея печать номера на консоль каждый раз, когда нажата кнопка:

let numbers = button.rx.tap.map { Int(arc4random()) } 

    numbers.subscribe(onNext: { contents in 
     print(contents) 
    }).addDisposableTo(bag) 

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

Теперь давайте накапливаем их в массив:

let numbers = button.rx.tap.map { Int(arc4random()) } 
     .scan([Int](), accumulator: { (array, number) in 
      array + [number] 
     }) 

    numbers.subscribe(onNext: { contents in 
     print(contents) 
    }).addDisposableTo(bag) 

Теперь давайте добавят охранник, чтобы убедиться, массив остается < 10 элементов ...

let numbers = button.rx.tap.map { Int(arc4random()) } 
     .scan([Int](), accumulator: { (array, number) in 
      guard array.count < 10 else { return [] } 
      return array + [number] 
     }) 

    numbers.subscribe(onNext: { contents in 
     print(contents) 
    }).addDisposableTo(bag) 

Надеется, что это помогает!

Смежные вопросы