2016-02-19 92 views
2

我從RxSwift開始,來自ReactiveCocoa。我有一個概念性問題。從Observable獲取一個值

假設我有一個值,我想隨着時間觀察,例如,一個溫度。所以有很多情況和地方我訂閱這個值來對變化做出反應。沒問題!

但也有使用情況下,當我需要的只是最新值例如爲:

if temperatue > 5 { 
    // do something 
} 

所以我只想做對即價值決定/操作或至少基於該值。這促使我接近使用shareReplay可觀察值。但即使我只想使用一次,我是否需要訂閱該值?

或者這種方法是錯誤的嗎?我將如何做這個用例(價值隨着時間的推移而只訪問最後一次的值)?我需要來源,一個熱的感冒嗎?

回答

2

使用Variable

class SomeClass { 
    let temperature = Variable<Int>(50) 

    func doSomething() { 
     if temperature.value > 50 { 
      print("something") 
     } 
    } 

    func subscribeToTemperature() { 
     temperature.asObservable.subscribeNext { t in 
      print("Temperature now is \(t)") 
     }.addDisposableTo(bag) 
    } 

    func setTemperature() { 
     temperature.value = 20 
    } 

    func observeTemperature(t: Observable<Int>) { 
     t.bindTo(temperature).addDisposableTo(bag) 
    } 
} 
+1

謝謝!我希望能有更少的「管理費用」,但似乎可以管理。 – beseder