

Rxcombine proporciona puentes de tipo bidireccional entre RxSwift y el marco Combine de Apple.
Nota : Esto es altamente experimental, y básicamente solo un POC rápido. Con mucho gusto acepto PRS, ideas, opiniones o mejoras. Gracias ! :)
Consulte la aplicación Ejemplo en la carpeta Ejemplopp . Ejecute pod install antes de abrir el proyecto.

Agregue la siguiente línea a su Podfile :
pod 'RxCombine'Agregue la siguiente dependencia a su archivo paquete.swift :
. package ( url : " https://github.com/CombineCommunity/RxCombine.git " , from : " 1.6.0 " )Carthage Support se ofrece como un binario prebuilt.
Agregue lo siguiente a su Cartfile :
github "CombineCommunity/RxCombine"
Rxcombine proporciona varios ayudantes y conversiones para ayudarlo a cerrar sus tipos de rxswift existentes para combinar.
Nota : Si desea obtener más información sobre los operadores paralelos en Combine de RXSWIFT, consulte mi RXSWIFT para combinar la hoja de trucos (o en GitHub) .
Observable (y otros ObservableConvertibleType s) tienen una propiedad publisher que devuelve un AnyPublisher<Element, Swift.Error> Reflejando el Observable subyacente. let observable = Observable . just ( " Hello, Combine! " )
observable
. publisher // AnyPublisher<String, Swift.Error>
. sink ( receiveValue : { value in ... } )Relays y Subjects se pueden convertir a sus partidarios de la counción combinada utilizando el método toCombine() , por lo que puede usarlos como si fueran sujetos combinados regulares y tenerlos conectados a sus sujetos existentes. 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 proporciona varios ayudantes y conversiones para ayudarlo a unir el código y los tipos en su base de código RXSWIFT existente.
Publisher tienen un método asObservable() , que proporciona un Observable<Output> que refleja el Publisher subyacente. // 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 y CurrentValueSubject tienen un método asAnyObserver() que devuelve un AnyObserver<Output> . Vincular a él desde su código RXSWIFT empuja los eventos al sujeto de combinación subyacente. // 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, por supuesto ;-) Vea el archivo de licencia.
El logotipo de Apple y el marco Combine son la propiedad de Apple Inc.