

RXCombine ให้การเชื่อมโยงประเภทสองทิศทางระหว่าง RXSWIFT และเฟรมเวิร์กรวมของ Apple
หมายเหตุ : นี่เป็นการทดลองอย่างมากและโดยทั่วไปแล้วเป็นเพียง POC อย่างรวดเร็ว ฉันยินดีรับ PRS ความคิดความคิดเห็นหรือการปรับปรุง ขอบคุณ ! -
ตรวจสอบแอพตัวอย่างในโฟลเดอร์ ExampleApp Run pod install ก่อนเปิดโครงการ

เพิ่มบรรทัดต่อไปนี้ใน PodFile ของคุณ:
pod 'RxCombine'เพิ่มการพึ่งพาต่อไปนี้ในไฟล์ package.swift ของคุณ:
. package ( url : " https://github.com/CombineCommunity/RxCombine.git " , from : " 1.6.0 " )Carthage Support เสนอเป็นไบนารีที่สร้างไว้ล่วงหน้า
เพิ่มสิ่งต่อไปนี้ใน CartFile ของคุณ:
github "CombineCommunity/RxCombine"
RXCombine ให้ผู้ช่วยเหลือและการแปลงหลายคนเพื่อช่วยคุณเชื่อมโยงประเภท RXSwift ที่มีอยู่ของคุณเพื่อรวมเข้าด้วยกัน
หมายเหตุ : หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับตัวดำเนินการแบบขนานในการรวมจาก RXSwift ให้ตรวจสอบ RXSwift ของฉันเพื่อรวมแผ่นโกง (หรือบน GitHub)
Observable (และอื่น ๆ ObservableConvertibleType มีการใช้คุณสมบัติ publisher ซึ่งส่งคืน AnyPublisher<Element, Swift.Error> สะท้อนให้เห็นถึง Observable ที่สังเกตได้ let observable = Observable . just ( " Hello, Combine! " )
observable
. publisher // AnyPublisher<String, Swift.Error>
. sink ( receiveValue : { value in ... } )Relays และ Subjects สามารถแปลงเป็น counterparts รวมของพวกเขาโดยใช้วิธี 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 และ Framework รวมเป็นคุณสมบัติของ Apple Inc.