BehaviorRelay 筆記
因為是單向的資訊流,在每次更新資訊時都是用 .accept 送出最近資訊,所以最好的做法是如果本身的資訊是組合性的 struct 則拆開成數個 BehaviorRelay 各別更新會比較好,這樣綁定在不同的 UIView 元件會比較好處理。 例如本來是長這樣: struct Info { var propertyA: Bool = false var propertyB: Bool = false var propertyC: Bool = false } 就拆成三個 property 各自維護: let propertyA = BehaviorRelay<Bool>(value: false) let propertyB = BehaviorRelay<Bool>(value: false) let propertyC = BehaviorRelay<Bool>(value: false) 然後就可以在 ViewController 層各別 Driver 綁定; 在最後如果需要組合判斷時才在用 Observable.combineLatest 來處理,例如: var isEnable: Driver<Bool> { return Observable.combineLatest(propertyA, propertyB, propertyC) .map { $0 && $1 && $2 } ....