

RxCombine bietet eine bidirektionale Überbrückung zwischen RXSwift und Apples Combine-Framework.
Hinweis : Dies ist sehr experimentell und im Grunde genommen nur ein schneller POC-POC. Ich akzeptiere gerne PRs, Ideen, Meinungen oder Verbesserungen. Danke ! :)
Schauen Sie sich die Beispiel -App im Beispielplean -Ordner an. Führen Sie pod install aus, bevor Sie das Projekt öffnen.

Fügen Sie Ihrer Podfile die folgende Zeile hinzu:
pod 'RxCombine'Fügen Sie der folgenden Abhängigkeit zu Ihrem Paket hinzu.
. package ( url : " https://github.com/CombineCommunity/RxCombine.git " , from : " 1.6.0 " )Die Karthago -Unterstützung wird als vorgebauter Binärdatum angeboten.
Fügen Sie Ihrem Cartfile Folgendes hinzu:
github "CombineCommunity/RxCombine"
RxCombine bietet mehrere Helfer und Conversions, mit denen Sie Ihre vorhandenen RXSwift -Typen zum Kombinieren schließen können.
Hinweis : Wenn Sie mehr über die parallelen Operatoren in Combine von RxSwift erfahren möchten, lesen Sie meinen RXSwift, um Cheat Sheet (oder auf GitHub) zu kombinieren.
Observable (und andere ObservableConvertibleType ) verfügen über eine publisher -Eigenschaft, die einen AnyPublisher<Element, Swift.Error> das zugrunde liegende Observable widerspiegelt. let observable = Observable . just ( " Hello, Combine! " )
observable
. publisher // AnyPublisher<String, Swift.Error>
. sink ( receiveValue : { value in ... } )Relays und Subjects können unter Verwendung der Methode toCombine() in ihre Mähdrescherbekämpfung umgewandelt werden, sodass Sie sie so verwenden können, als wären sie regelmäßige Mischfleischfächer, und lassen sie mit Ihren vorhandenen Probanden verbunden. let relay = BehaviorRelay < Int > ( value : 0 )
// Use `sink` on RxSwift relay
let combineSubject = relay . toCombine ( )
combineSubject . sink ( receiveValue : { value in ... } )
// Use `send(value:)` on RxSwift relay
combineSubject . send ( 1 )
combineSubject . send ( 2 )
combineSubject . send ( 3 )RxCombine bietet mehrere Helfer und Konvertierungen, mit denen Sie den Codebasis mit dem Kombination von Code und in Ihre vorhandene RXSWIFT -Codebasis verbinden können.
Publisher haben eine asObservable() -Methode, die eine Observable<Output> des zugrunde liegenden Publisher liefert. // A publisher publishing numbers from 0 to 100.
let publisher = AnyPublisher < Int , Swift . Error > { subscriber in
( 0 ... 100 ) . forEach { _ = subscriber . receive ( $0 ) }
subscriber . receive ( completion : . finished )
}
publisher
. asObservable ( ) // Observable<Int>
. subscribe ( onNext : { num in ... } )PassthroughSubject und CurrentValueSubject haben beide eine asAnyObserver() -Methode, die eine AnyObserver<Output> zurückgibt. Die Bindung von Ihrem RXSwift -Code drückt die Ereignisse in das zugrunde liegende Kombinat. // Combine Subject
let subject = PassthroughSubject < Int , Swift . Error > ( )
// A publisher publishing numbers from 0 to 100.
let publisher = AnyPublisher < Int , Swift . Error > { subscriber in
( 0 ... 100 ) . forEach { _ = subscriber . receive ( $0 ) }
subscriber . receive ( completion : . finished )
}
// Convert a Publisher to an Observable and bind it
// back to a Combine Subject ???
publisher . asObservable ( )
. bind ( to : subject )
Observable . of ( 10 , 5 , 7 , 4 , 1 , 6 )
. subscribe ( subject . asAnyObserver ( ) ) MIT natürlich ;-) Siehe die Lizenzdatei.
Das Apple -Logo und das Combine -Framework sind die Eigenschaft von Apple Inc.