Как создать 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)

Другие вопросы по тегам