📖
【学習備忘録】callbackを使ったCounterアプリ
はじめに
「比較して学ぶ RxSwift4 入門」のCounterアプリのコードをもとに学習しました。
比較材料であるcallbackを使ったCounterアプリです。
サンプルコード
完成
1. ViewModel
- countプロパティとカウントアップ・ダウン・リセットのメソッドを記載。
class CounterViewModel {
private(set) var count = 0
func incrementCount(callback: (Int) -> ()) {
count += 1
callback(count)
}
func decrementCount(callback: (Int) -> ()) {
count -= 1
callback(count)
}
func resetCount(callback: (Int) -> ()) {
count = 0
callback(count)
}
}
2. ViewController
- viewDidLoad()内でCounterViewModelをインスタンス化
- @IBAction内でそれぞれに対応する処理を記載。
- callbackで取得したcountをupdateCountLabelメソッドで画面に反映させる。
class ViewController: UIViewController {
@IBOutlet weak var countLabel: UILabel!
private var viewModel: CounterViewModel!
override func viewDidLoad() {
super.viewDidLoad()
viewModel = CounterViewModel()
}
@IBAction func countUp(_ sender: Any) {
viewModel.incrementCount { [weak self] count in
self?.updateCountLabel(count)
}
}
@IBAction func countDown(_ sender: Any) {
viewModel.decrementCount { [weak self] count in
self?.updateCountLabel(count)
}
}
@IBAction func countReset(_ sender: Any) {
viewModel.resetCount { [weak self] count in
self?.updateCountLabel(count)
}
}
private func updateCountLabel(_ count: Int) {
countLabel.text = String(count)
}
}
GitHub
参考にしたもの
1.比較して学ぶRxSwift入門
さいごに
シンプルなアプリでは、RxSwiftを使うよりもこのようなコードのかき方の方が圧倒的にわかりやすいと感じました。
間違いや認識違いがあれば指摘いただければ幸いです。
Discussion