問題
以前までこのような形で情報をフェッチしてビューに反映させてました
(この例ではViewとViewModelを分けたりとかしてませんが実際はいい感じに分けます)
User.system.getMyPhoto({ (photo) in User.system.getMyName({ (name) in User.system.getMyID({ (id) in 引数に3つの情報が必要ななんらかの処理 }) }) })
これだとネストがいっぱいでイヤ!
(そもそも”引数に3つの情報が必要ななんらかの処理”が必要かという話は置いておいて...)
解決策
RxSwiftで値を監視しようぜという提案
こうします
var photo = Variable<String>("") var name = Variable<String>("") var id = Variable<String>("") let bag = DisposeBag() User.system.getMyPhoto() { self.photo.value = $0 } User.system.getMyName() { self.name.value = $0 } User.system.getMyID() { self.id.value = $0 } Observable.combineLatest(photo.asObservable(), name.asObservable(), id.asObservable()) {photo, name, id in (photo, name, id) }.subscribe { event in 引数に3つの情報が必要ななんらかの処理 }.disposed(by: bag)
RxSwiftに詳しく無いので書き方はあってるかわかりませんが一応ネストを少なくできるかなといった感じです