核心功能:自定义Event的触发事件集合,以及订阅该事件触发后会修改的一个状态集对象的Observable。同时自定义 在事件触发后,对状态集对象进行数据变更。
样例代码:
//在下面代码中,状态集对象就是Int
typealias State = Int
//自定义事件是 增加和减少
enum Event {
case increment
case decrement
}
Observable.system(
initialState: 0, //声明状态集对象的初始化值
//reduce里,是接收到 event事件后,对状态集对象进行自定义处理的代码。然后将新的状态集对象返回。 STEP 2
reduce: { (state, event) -> State in
switch event {
case .increment:
return state + 1
case .decrement:
return state - 1
}
},
scheduler: MainScheduler.instance,
feedback:
//bind 传入owner对象,作为 第二个closure的首个参数返回。
//第二个closure参数作用是 自定义Event的触发时机,以及 对状态集对象Observable的订阅操作
//state就是一个 状态集对象的Observable,即 ObservableSchedulerContext<State>
bind(self) { me, state -> Bindings<Event> in
//对状态集对象Observable的订阅集合
let subscriptions = [
state.map(String.init).bind(to: me.label.rx.text) //STEP3
]
//自定义Event的触发器;这里虚构了两个button的action
let events = [
me.plus.rx.tap.map { Event.increment }, //STEP 1
me.minus.rx.tap.map { Event.decrement } //STEP 1
]
return Bindings(
subscriptions: subscriptions,
events: events
)
}
)