

RXCOMBINE fournit un pontage de type bidirectionnel entre RXSWIFT et le cadre Combine d'Apple.
Remarque : Ceci est très expérimental, et fondamentalement juste un POC à toger rapidement. J'accepte volontiers les PR, les idées, les opinions ou les améliorations. Merci ! :)
Consultez l'application Exemple dans le dossier ExampleApp . Exécutez pod install avant d'ouvrir le projet.

Ajoutez la ligne suivante à votre podfile :
pod 'RxCombine'Ajoutez la dépendance suivante à votre fichier package.swift :
. package ( url : " https://github.com/CombineCommunity/RxCombine.git " , from : " 1.6.0 " )Le support de Carthage est offert en tant que binaire préfère.
Ajoutez ce qui suit à votre carton :
github "CombineCommunity/RxCombine"
RXCOMBINE fournit plusieurs aides et conversions pour vous aider à combler vos types RXSWift existants à combiner.
Remarque : Si vous souhaitez en savoir plus sur les opérateurs parallèles dans combiner à partir de RXSWift, consultez mon RXSWift pour combiner la feuille de triche (ou sur GitHub) .
Observable (et d'autres ObservableConvertibleType s) ont une propriété publisher qui renvoie un AnyPublisher<Element, Swift.Error> reflétant l' Observable sous-jacent. let observable = Observable . just ( " Hello, Combine! " )
observable
. publisher // AnyPublisher<String, Swift.Error>
. sink ( receiveValue : { value in ... } )Relays et Subjects peuvent être convertis en leurs combinés-compas de combinaison à l'aide de la méthode toCombine() , afin que vous puissiez les utiliser comme s'ils sont des sujets combinés réguliers et les connecter à vos sujets existants. 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 fournit plusieurs aides et conversions pour vous aider à ponder le code et les types dans votre base de code RXSWift existante.
Publisher ont une méthode asObservable() , fournissant une Observable<Output> reflétant l' Publisher sous-jacent. // 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 et CurrentValueSubject ont tous deux une méthode asAnyObserver() qui renvoie un AnyObserver<Output> . La liaison à partir de votre code RXSWift pousse les événements au sujet de combinaison sous-jacent. // 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, bien sûr ;-) Voir le fichier de licence.
Le logo Apple et le cadre de combinaison sont la propriété d'Apple Inc.