swift - 如何在 Swift ReactiveCocoa 4 中从 MutableProperty<U> 创建 MutableProperty<T>

标签 swift reactive-cocoa-4

是否有任何简单的方法可以在 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/

相关文章:

ios - 在 Swift 中制作旋转图像的动画

ios - 如何在 SignalProducer 上映射值和错误

ios - 了解一个基本的 Swift 编译器错误

swift - Xcode、Swift、 TableView Controller

IOS swift 如何在标签点击时在 TableView 中获取标签文本

arrays - 如何从两个列表中快速打印

ios - rac_command 只响应单击

objective-c - 如何在 ReactiveCocoa 5 中将 RACSignal 转换为 SignalProducer?

swift - 在 Value 是 Array<SomeProtocol> 的情况下扩展 SignalProducerType

ios - swift 3.0 中的 Uibutton 问题