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

How do you connect a button to an array in RxSwift?

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

  1. 创建一个可观察数组;
  2. 单击按钮时向数组添加一个整数;
  3. 当数组有 > 10 个项目时清空数组。

如果你是菜鸟,这在 RxSwift 中是不可能的。

谢谢。

首先从输出开始,然后找出输入如何修改输出。

在您的情况下,您没有指定输出,所以这可能是您遇到如此困难的部分原因。

因此,让我们首先在每次单击按钮时向控制台打印一个数字:

    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)

希望对您有所帮助!