今日はswift!
ボタンをタップされた時のイベントとか、UserDefaultsの情報が更新されたタイミングだとか、homeから戻ってきたタイミングだとか……そういう諸々のイベントが発生した時にobserveの入り口を一つにして処理させたいということがあったので、備忘録も兼ねて!
それぞれの実行結果を引数として欲しい場合の実装例!
merge1.swift
let o1 = NotificationCenter.default
.rx.notification(.UIApplicationDidBecomeActive)
.map { $0 as AnyObject }
let o2 = UserDefaults.standard
.rx.observe(String.self, "hoge")
.map { $0 as AnyObject }
Observable.merge(o1, o2).subscribe(onNext: { arg in
// イケてる処理を書こう!
})
AnyObjectに変換させて、エラーにならないようにしています
追記 実行結果は必要ない場合の実装例!
merge2.swift
let o1 = NotificationCenter.default
.rx.notification(.UIApplicationDidBecomeActive)
.map { _ in }
let o2 = UserDefaults.standard
.rx.observe(String.self, "hoge")
.map { _ in }
Observable.merge(o1, o2).subscribe(onNext: { _ in
// イケてる処理
})
処理が簡潔になりました!