2017-10-18 105 views
0

設置生產者發佈具有相同值的新事件的MutableProperty結果的值是什麼?如何限制生產者發佈具有財產現有價值的事件?

換句話說,如果我不想要具有相同值的新事件,我需要這樣做!= check?

let really = MutableProperty<Bool>(false) 

func updateReality(newReality: Bool) { 
    if really.value != newReality { 
     really.value = newReality 
    } 
} 

回答

0

屬性總是發送新值,即使它與舊值相同。它必須是這種方式,否則你不能使用它與非Equatable類型。但是,如果你正在處理一個Equatable的類型,比如Bool,那麼你可以使用skipRepeats operator你的財產,以創建只接收新值的新屬性,然後揭露該屬性對消費者:

let really = MutableProperty<Bool>(false) 
let reallyWithNoRepeats = really.skipRepeats() 

所以你將通過really.value更新價值,但消費者訂閱reallyWithNoRepeats僅獲取新值。