2017-02-09 2 views
0

Есть ли простой способ создания MutableProperty из MutableProperty в Swift ReactiveCocoa 4?Как создать MutableProperty <T> от MutableProperty <U> в Swift ReactiveCocoa 4

У меня есть случай, и я хочу, чтобы создать класс B с классом A, в котором мне нужно настроить statusB со статусомA, но как это сделать?

class ClassA { 
    var statusA = MutableProperty<T> 
} 

class ClassB { 
    var statusB = MutableProperty<U> 

    func getStatusB(from StatusA: T) -> U { 
     // .. assume this is implemented. 
    } 

    init(statusB: U) { 
     //... 
    } 

    convenience init(from classA: ClassA) { 
     self.statusB = // here how to setup this value from classA's statusA with getStatusB(from:)? 
    } 
} 
+0

я нашел подобные у https://github.com/ReactiveCocoa/ReactiveCocoa/issues/2183 – JerryZhou

+0

после карты (..) MutableProperty стать AnyProperty , но не MutableProperty JerryZhou

ответ

0

вы не можете сделать MutableProperty<U> непосредственно из MutableProperty<T>, но вы можете сделать MutableProperty<U> с начальным значением getStatusB(from: classA.statusA.value), а затем привязать его к classA.statusA.signal.map(getStatusB), так что все изменения в MutableProperty<T> распространяются на MutableProperty<U>, как

convenience init(from classA: ClassA) { 
    self.init(getStatusB(from: classA.statusA.value))) 
    self.statusB <~ classA.statusA.signal.map(getStatusB) 
} 

(однако для этого компилировать, getStatusB не может быть метод экземпляра ClassB, потому что вы должны быть в состоянии назвать его, прежде чем позвонить self.init)

Смежные вопросы