

RxCombine обеспечивает двунаправленное соединение типа между RXSWIFT и Apple Combine Framework.
Примечание : это очень экспериментально, и в основном просто быстро питательный POC. Я с радостью принимаю PR, идеи, мнения или улучшения. Спасибо ! :)
Проверьте пример приложения в папке SharepleApp . Запустите pod install перед открытием проекта.

Добавьте следующую строку в свой Podfile :
pod 'RxCombine'Добавьте следующую зависимость в свой пакет .
. package ( url : " https://github.com/CombineCommunity/RxCombine.git " , from : " 1.6.0 " )Поддержка Карфагена предлагается как предварительно построенный бинар.
Добавьте следующее в свой Cartfile :
github "CombineCommunity/RxCombine"
RxCombine предоставляет несколько помощников и конверсий, чтобы помочь вам объединить свои существующие типы RXSWIFT.
Примечание . Если вы хотите узнать больше о параллельных операторах в комбинации от RXSWIFT, ознакомьтесь с моим RXSWIFT, чтобы объединить шпаргалку (или на GitHub) .
Observable (и другие ObservableConvertibleType S) есть свойство publisher , которое возвращает AnyPublisher<Element, Swift.Error> отражающий базовый Observable . let observable = Observable . just ( " Hello, Combine! " )
observable
. publisher // AnyPublisher<String, Swift.Error>
. sink ( receiveValue : { value in ... } )Relays и Subjects могут быть преобразованы в их комбинированные частицы, используя метод toCombine() , поэтому вы можете использовать их так, как если бы они были обычными субъектами, и подключать их к существующим субъектам. 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 предоставляет несколько помощников и конверсий, которые помогут вам объединить код и типы в вашей существующей кодовой базе RXSWIFT.
Publisher S имеет метод asObservable() , обеспечивающий Observable<Output> , отражающий базовый Publisher . // 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 и CurrentValueSubject имеют метод asAnyObserver() , который возвращает AnyObserver<Output> . Привязанность к нему из вашего кода RXSWIFT подталкивает события к базовому комбинированному субъекту. // 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, конечно ;-) См. Файл лицензии.
Логотип Apple и фреймворк Combine являются свойством Apple Inc.