如何在RxSwift中将按钮连接到数组?

时间:2017-02-22 00:09:28

标签: rx-swift

所以我想用RxSwift做一些非常简单的事情作为概念的证明:

  1. 装箱一个可观察的阵列;
  2. 单击按钮时,向数组中添加一个整数;
  3. 当阵列具有> 10个项目清空阵列。
  4. 如果你是一个菜鸟,这在RxSwift中是难以理解的。

    THX。

1 个答案:

答案 0 :(得分: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)

希望这有帮助!