是否有任何简单的方法可以在 Swift ReactiveCocoa 4 中从 MutableProperty 创建 MutableProperty?
我有一个案例,我想要一种用 classA 创建 classB 的方法,其中我需要用 statusA 设置 statusB,但是如何做到这一点?
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:)?
}
}
最佳答案
你不能创建MutableProperty<U>
直接来自MutableProperty<T>
但你可以做一个 MutableProperty<U>
初始值getStatusB(from: classA.statusA.value)
然后将其绑定(bind)到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
之前调用它)
关于swift - 如何在 Swift ReactiveCocoa 4 中从 MutableProperty<U> 创建 MutableProperty<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42127155/