2017-02-09 1 views
0

Gibt es eine einfache Möglichkeit, in Swift ReactiveCocoa 4 MutableProperty aus MutableProperty zu erstellen?Erstellen von MutableProperty <T> von MutableProperty <U> in Swift ReactiveCocoa 4

Ich habe einen Fall, und ich möchte eine Möglichkeit, Klasse B mit KlasseA zu erstellen, in dem ich StatusB mit StatusA einrichten muss, aber wie soll ich das tun?

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

Ich fand ähnlich bei https://github.com/ReactiveCocoa/ReactiveCocoa/issues/2183 – JerryZhou

+0

nach Karte (..) MutableProperty werden AnyProperty , aber nicht MutableProperty JerryZhou

Antwort

0

Sie können keine MutableProperty<U> direkt von einem MutableProperty<T> machen, aber Sie können einen MutableProperty<U> mit Anfangswert getStatusB(from: classA.statusA.value) machen und dann binden sie an classA.statusA.signal.map(getStatusB) so alle Änderungen an der MutableProperty<T> propagieren zum MutableProperty<U>, wie

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

(aber dafür zu kompilieren, getStatusB können keine Instanzmethode von ClassB sein, weil Sie es nennen müssen in der Lage sein, bevor Sie self.init nennen)

Verwandte Themen