在 RxSwift 中如何将按钮连接到数组?
How do you connect a button to an array in RxSwift?
所以我想用 RxSwift 做一些非常简单的事情作为概念证明:
- 创建一个可观察数组;
- 单击按钮时向数组添加一个整数;
- 当数组有 > 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)
希望对您有所帮助!
所以我想用 RxSwift 做一些非常简单的事情作为概念证明:
- 创建一个可观察数组;
- 单击按钮时向数组添加一个整数;
- 当数组有 > 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)
希望对您有所帮助!