Как создать MutableProperty<T> из MutableProperty<U> в Swift ReactiveCocoa 4
Есть ли простой способ создать MutableProperty из MutableProperty в Swift ReactiveCocoa 4?
У меня есть случай, и я хочу создать classB с помощью classA, в котором мне нужно настроить statusB с помощью statusA, но как это сделать?
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:)?
}
}
1 ответ
Ты не можешь сделать 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
)