From a4219416cdea8965f04e05731a28a736867ebaaf Mon Sep 17 00:00:00 2001 From: Krunoslav Zaher Date: Sat, 29 Aug 2015 21:20:44 +0200 Subject: [PATCH] Introduces new units `ControlProperty` and `ControlEvent`. --- Rx.xcodeproj/project.pbxproj | 26 + RxCocoa/Common/CocoaUnits/ControlEvent.swift | 50 + .../Common/CocoaUnits/ControlProperty.swift | 63 + RxCocoa/Common/DelegateProxyType.swift | 4 +- .../Common/Observable+CocoaExtensions.swift | 28 + .../Common/Observables/NSURLSession+Rx.swift | 4 +- RxCocoa/Common/RxCocoa.swift | 12 +- RxCocoa/OSX/NSButton+Rx.swift | 2 +- RxCocoa/OSX/NSControl+Rx.swift | 29 +- RxCocoa/OSX/NSImageView+Rx.swift | 53 +- RxCocoa/OSX/NSSlider+Rx.swift | 12 +- RxCocoa/OSX/NSTextField+Rx.swift | 49 +- RxCocoa/iOS/UIActionSheet+Rx.swift | 18 +- RxCocoa/iOS/UIAlertView+Rx.swift | 18 +- RxCocoa/iOS/UIBarButtonItem+Rx.swift | 8 +- RxCocoa/iOS/UIButton+Rx.swift | 4 +- RxCocoa/iOS/UICollectionView+Rx.swift | 64 +- RxCocoa/iOS/UIControl+Rx.swift | 51 +- RxCocoa/iOS/UIDatePicker+Rx.swift | 8 +- RxCocoa/iOS/UIGestureRecognizer+Rx.swift | 12 +- RxCocoa/iOS/UIImageView+Rx.swift | 21 +- RxCocoa/iOS/UILabel+Rx.swift | 17 +- RxCocoa/iOS/UIScrollView+Rx.swift | 13 +- RxCocoa/iOS/UISearchBar+Rx.swift | 15 +- RxCocoa/iOS/UISegmentedControl+Rx.swift | 8 +- RxCocoa/iOS/UISlider+Rx.swift | 10 +- RxCocoa/iOS/UISwitch+Rx.swift | 8 +- RxCocoa/iOS/UITableView+Rx.swift | 85 +- RxCocoa/iOS/UITextField+Rx.swift | 10 +- RxCocoa/iOS/UITextView+Rx.swift | 17 +- ...ctionViewSectionedAnimatedDataSource.swift | 6 +- ...lectionViewSectionedReloadDataSource.swift | 6 +- ...TableViewSectionedAnimatedDataSource.swift | 6 +- ...RxTableViewSectionedReloadDataSource.swift | 6 +- .../RxDataSourceStarterKit.swift | 21 + RxExample/RxExample.xcodeproj/project.pbxproj | 1612 +++++++++-------- .../IntroductionExampleViewController.swift | 2 +- .../PartialUpdatesViewController.swift | 12 +- .../TableView/DetailViewController.swift | 2 +- .../TableView/TableViewController.swift | 2 +- .../Views/CollectionViewImageCell.swift | 4 +- .../Views/WikipediaSearchCell.swift | 6 +- .../Views/WikipediaSearchViewController.swift | 6 +- RxTests/RxCocoaTests/UIControl+RxTests.swift | 4 +- 44 files changed, 1345 insertions(+), 1069 deletions(-) create mode 100644 RxCocoa/Common/CocoaUnits/ControlEvent.swift create mode 100644 RxCocoa/Common/CocoaUnits/ControlProperty.swift create mode 100644 RxCocoa/Common/Observable+CocoaExtensions.swift create mode 100644 RxDataSourceStarterKit/RxDataSourceStarterKit.swift diff --git a/Rx.xcodeproj/project.pbxproj b/Rx.xcodeproj/project.pbxproj index f6c71cba..883d972a 100644 --- a/Rx.xcodeproj/project.pbxproj +++ b/Rx.xcodeproj/project.pbxproj @@ -274,6 +274,12 @@ C8093F5F1B8A73A20088E94D /* Observable+Blocking.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093F581B8A73A20088E94D /* Observable+Blocking.swift */; }; C80D342E1B9245A40014629D /* CombineLatest+CollectionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80D342D1B9245A40014629D /* CombineLatest+CollectionType.swift */; settings = {ASSET_TAGS = (); }; }; C80D342F1B9245A40014629D /* CombineLatest+CollectionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80D342D1B9245A40014629D /* CombineLatest+CollectionType.swift */; settings = {ASSET_TAGS = (); }; }; + C80D338F1B91EF9E0014629D /* Observable+CocoaExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80D338E1B91EF9E0014629D /* Observable+CocoaExtensions.swift */; settings = {ASSET_TAGS = (); }; }; + C80D33901B91EF9E0014629D /* Observable+CocoaExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80D338E1B91EF9E0014629D /* Observable+CocoaExtensions.swift */; settings = {ASSET_TAGS = (); }; }; + C80D33981B922FB00014629D /* ControlEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80D33931B922FB00014629D /* ControlEvent.swift */; settings = {ASSET_TAGS = (); }; }; + C80D33991B922FB00014629D /* ControlEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80D33931B922FB00014629D /* ControlEvent.swift */; settings = {ASSET_TAGS = (); }; }; + C80D339A1B922FB00014629D /* ControlProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80D33941B922FB00014629D /* ControlProperty.swift */; settings = {ASSET_TAGS = (); }; }; + C80D339B1B922FB00014629D /* ControlProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80D33941B922FB00014629D /* ControlProperty.swift */; settings = {ASSET_TAGS = (); }; }; C88254151B8A752B00B02D69 /* CoreDataEntityEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253EF1B8A752B00B02D69 /* CoreDataEntityEvent.swift */; }; C88254161B8A752B00B02D69 /* RxCollectionViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253F11B8A752B00B02D69 /* RxCollectionViewReactiveArrayDataSource.swift */; }; C88254171B8A752B00B02D69 /* RxTableViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253F21B8A752B00B02D69 /* RxTableViewReactiveArrayDataSource.swift */; }; @@ -476,6 +482,9 @@ C8093F581B8A73A20088E94D /* Observable+Blocking.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Blocking.swift"; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; C8093F591B8A73A20088E94D /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; C80D342D1B9245A40014629D /* CombineLatest+CollectionType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CombineLatest+CollectionType.swift"; sourceTree = ""; }; + C80D338E1B91EF9E0014629D /* Observable+CocoaExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+CocoaExtensions.swift"; sourceTree = ""; }; + C80D33931B922FB00014629D /* ControlEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlEvent.swift; sourceTree = ""; }; + C80D33941B922FB00014629D /* ControlProperty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlProperty.swift; sourceTree = ""; }; C88253EF1B8A752B00B02D69 /* CoreDataEntityEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataEntityEvent.swift; sourceTree = ""; }; C88253F11B8A752B00B02D69 /* RxCollectionViewReactiveArrayDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewReactiveArrayDataSource.swift; sourceTree = ""; }; C88253F21B8A752B00B02D69 /* RxTableViewReactiveArrayDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewReactiveArrayDataSource.swift; sourceTree = ""; }; @@ -781,10 +790,12 @@ C8093E871B8A732E0088E94D /* _RXKVOObserver.m */, C8093E881B8A732E0088E94D /* _RXSwizzling.h */, C8093E891B8A732E0088E94D /* _RXSwizzling.m */, + C80D338E1B91EF9E0014629D /* Observable+CocoaExtensions.swift */, C8093E8A1B8A732E0088E94D /* CLLocationManager+Rx.swift */, C8093E8B1B8A732E0088E94D /* DelegateProxy.swift */, C8093E8C1B8A732E0088E94D /* DelegateProxyType.swift */, C8093E8D1B8A732E0088E94D /* Logging.swift */, + C80D33911B922FB00014629D /* CocoaUnits */, C8093E8E1B8A732E0088E94D /* Observables */, C8093E991B8A732E0088E94D /* Proxies */, C8093E9B1B8A732E0088E94D /* RxCocoa.swift */, @@ -847,6 +858,15 @@ path = RxBlocking; sourceTree = ""; }; + C80D33911B922FB00014629D /* CocoaUnits */ = { + isa = PBXGroup; + children = ( + C80D33931B922FB00014629D /* ControlEvent.swift */, + C80D33941B922FB00014629D /* ControlProperty.swift */, + ); + path = CocoaUnits; + sourceTree = ""; + }; C88253EE1B8A752B00B02D69 /* iOS */ = { isa = PBXGroup; children = ( @@ -1208,6 +1228,7 @@ C8093EFB1B8A732E0088E94D /* RxCocoa.swift in Sources */, C88254231B8A752B00B02D69 /* RxTableViewDelegateProxy.swift in Sources */, C882542D1B8A752B00B02D69 /* UIImageView+Rx.swift in Sources */, + C80D33981B922FB00014629D /* ControlEvent.swift in Sources */, C8093EF31B8A732E0088E94D /* NSObject+Rx+CoreGraphics.swift in Sources */, C882542A1B8A752B00B02D69 /* UIControl+Rx.swift in Sources */, C88254341B8A752B00B02D69 /* UITableView+Rx.swift in Sources */, @@ -1221,6 +1242,7 @@ C88254151B8A752B00B02D69 /* CoreDataEntityEvent.swift in Sources */, C88254211B8A752B00B02D69 /* RxSearchBarDelegateProxy.swift in Sources */, C882541D1B8A752B00B02D69 /* RxAlertViewDelegateProxy.swift in Sources */, + C80D338F1B91EF9E0014629D /* Observable+CocoaExtensions.swift in Sources */, C88254311B8A752B00B02D69 /* UISegmentedControl+Rx.swift in Sources */, C8093EED1B8A732E0088E94D /* KVOObservable.swift in Sources */, C88254281B8A752B00B02D69 /* UIButton+Rx.swift in Sources */, @@ -1232,6 +1254,7 @@ C88254241B8A752B00B02D69 /* RxTextViewDelegateProxy.swift in Sources */, C88254271B8A752B00B02D69 /* UIBarButtonItem+Rx.swift in Sources */, C88254251B8A752B00B02D69 /* UIActionSheet+Rx.swift in Sources */, + C80D339A1B922FB00014629D /* ControlProperty.swift in Sources */, C882542B1B8A752B00B02D69 /* UIDatePicker+Rx.swift in Sources */, C88254221B8A752B00B02D69 /* RxTableViewDataSourceProxy.swift in Sources */, C8093EDD1B8A732E0088E94D /* _RXSwizzling.m in Sources */, @@ -1265,6 +1288,8 @@ C8093EFE1B8A732E0088E94D /* RxTarget.swift in Sources */, C8093ED21B8A732E0088E94D /* _RX.m in Sources */, C8093EFC1B8A732E0088E94D /* RxCocoa.swift in Sources */, + C80D33991B922FB00014629D /* ControlEvent.swift in Sources */, + C80D339B1B922FB00014629D /* ControlProperty.swift in Sources */, C8093EF41B8A732E0088E94D /* NSObject+Rx+CoreGraphics.swift in Sources */, C8093EF01B8A732E0088E94D /* KVOObserver.swift in Sources */, C8093EEE1B8A732E0088E94D /* KVOObservable.swift in Sources */, @@ -1282,6 +1307,7 @@ C8093EF81B8A732E0088E94D /* NSURLSession+Rx.swift in Sources */, C8093F4C1B8A732E0088E94D /* NSSlider+Rx.swift in Sources */, C8093EE81B8A732E0088E94D /* ControlTarget.swift in Sources */, + C80D33901B91EF9E0014629D /* Observable+CocoaExtensions.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/RxCocoa/Common/CocoaUnits/ControlEvent.swift b/RxCocoa/Common/CocoaUnits/ControlEvent.swift new file mode 100644 index 00000000..2519c103 --- /dev/null +++ b/RxCocoa/Common/CocoaUnits/ControlEvent.swift @@ -0,0 +1,50 @@ +// +// ControlEvent.swift +// Rx +// +// Created by Krunoslav Zaher on 8/28/15. +// Copyright © 2015 Krunoslav Zaher. All rights reserved. +// + +import Foundation +#if !RX_NO_MODULE +import RxSwift +#endif + +protocol ControlEventType : ObservableType { + typealias E + func asControlEvent() -> ControlEvent +} + +/** + Unit for `Observable`/`ObservableType` that represents event on UI element. + + It's properties are: + + - it never fails + - it won't send any initial value on subscription + - it will `Complete` sequence on control being deallocated + - it never errors out + - it delivers events on `MainScheduler.sharedInstance` +*/ +public struct ControlEvent : ControlEventType { + public typealias E = PropertyType + + let source: Observable + + init(source: Observable) { + self.source = source + } + + public func subscribe(observer: O) -> Disposable { + return self.source.subscribe(observer) + } + + public func asObservable() -> Observable { + return self.source + } + + public func asControlEvent() -> ControlEvent { + return self + } +} \ No newline at end of file diff --git a/RxCocoa/Common/CocoaUnits/ControlProperty.swift b/RxCocoa/Common/CocoaUnits/ControlProperty.swift new file mode 100644 index 00000000..13b2edae --- /dev/null +++ b/RxCocoa/Common/CocoaUnits/ControlProperty.swift @@ -0,0 +1,63 @@ +// +// ControlProperty.swift +// Rx +// +// Created by Krunoslav Zaher on 8/28/15. +// Copyright © 2015 Krunoslav Zaher. All rights reserved. +// + +import Foundation +#if !RX_NO_MODULE +import RxSwift +#endif + +public protocol ControlPropertyType : ObservableType, ObserverType { + func asControlProperty() -> ControlProperty +} + +/** + Unit for `Observable`/`ObservableType` that represents property of UI element. + + It's properties are: + + - it never fails + - `shareReplay(1)` behavior + - it's stateful, upon subscription (calling subscribe) last element is immediatelly replayed if it was produced + - it will `Complete` sequence on control being deallocated + - it never errors out + - it delivers events on `MainScheduler.sharedInstance` +*/ +public struct ControlProperty : ControlPropertyType { + public typealias E = PropertyType + + let source: Observable + let observer: ObserverOf + + init(source: Observable, observer: ObserverOf) { + self.source = source + self.observer = observer + } + + public func subscribe(observer: O) -> Disposable { + return self.source.subscribe(observer) + } + + public func asObservable() -> Observable { + return self.source + } + + public func asControlProperty() -> ControlProperty { + return self + } + + public func on(event: Event) { + switch event { + case .Error(let error): + bindingErrorToInterface(error) + case .Next: + self.observer.on(event) + case .Completed: + self.observer.on(event) + } + } +} \ No newline at end of file diff --git a/RxCocoa/Common/DelegateProxyType.swift b/RxCocoa/Common/DelegateProxyType.swift index ac676313..3aabe9b3 100644 --- a/RxCocoa/Common/DelegateProxyType.swift +++ b/RxCocoa/Common/DelegateProxyType.swift @@ -170,9 +170,7 @@ extension ObservableType { switch event { case .Error(let error): -#if DEBUG - rxFatalError("Binding error to data source: \(error)") -#endif + bindingErrorToInterface(error) disposable.dispose() case .Completed: disposable.dispose() diff --git a/RxCocoa/Common/Observable+CocoaExtensions.swift b/RxCocoa/Common/Observable+CocoaExtensions.swift new file mode 100644 index 00000000..c5f4bb4d --- /dev/null +++ b/RxCocoa/Common/Observable+CocoaExtensions.swift @@ -0,0 +1,28 @@ +// +// Observable+Extensions.swift +// Rx +// +// Created by Krunoslav Zaher on 8/29/15. +// Copyright © 2015 Krunoslav Zaher. All rights reserved. +// + +import Foundation +#if !RX_NO_MODULE +import RxSwift +#endif + +extension ObservableType { + + public func bindTo(target: O) -> Disposable { + return self.subscribe(target) + } + + public func bindTo(binder: Self -> R) -> R { + return binder(self) + } + + public func bindTo(binder: Self -> R1 -> R2, curriedArgument: R1) -> R2 { + return binder(self)(curriedArgument) + } + +} \ No newline at end of file diff --git a/RxCocoa/Common/Observables/NSURLSession+Rx.swift b/RxCocoa/Common/Observables/NSURLSession+Rx.swift index 67ceeb32..294b244c 100644 --- a/RxCocoa/Common/Observables/NSURLSession+Rx.swift +++ b/RxCocoa/Common/Observables/NSURLSession+Rx.swift @@ -103,7 +103,7 @@ extension NSURLSession { return rx_response(request).map { (data, response) -> NSData in if let response = response as? NSHTTPURLResponse { if 200 ..< 300 ~= response.statusCode { - return data! + return data ?? NSData() } else { throw rxError(.NetworkError, message: "Server returned failure", userInfo: [RxCocoaErrorHTTPResponseKey: response]) @@ -119,7 +119,7 @@ extension NSURLSession { public func rx_JSON(request: NSURLRequest) -> Observable { return rx_data(request).map { (data) -> AnyObject! in - return try NSJSONSerialization.JSONObjectWithData(data, options: []) + return try NSJSONSerialization.JSONObjectWithData(data ?? NSData(), options: []) } } diff --git a/RxCocoa/Common/RxCocoa.swift b/RxCocoa/Common/RxCocoa.swift index 06f11ca2..7e9ee576 100644 --- a/RxCocoa/Common/RxCocoa.swift +++ b/RxCocoa/Common/RxCocoa.swift @@ -51,19 +51,11 @@ func handleVoidObserverResult(result: RxResult) { } func bindingErrorToInterface(error: ErrorType) { -#if DEBUG - rxFatalError("Binding error to UI: \(error)") -#endif -} - -// There are certain kinds of errors that shouldn't be silenced, but it could be weird to crash the app because of them. -// DEBUG -> crash the app -// RELEASE -> log to console -func rxPossiblyFatalError(error: String) { + let error = "Binding error to UI: \(error)" #if DEBUG rxFatalError(error) #else - print("[RxSwift]: \(error)") + print(error) #endif } diff --git a/RxCocoa/OSX/NSButton+Rx.swift b/RxCocoa/OSX/NSButton+Rx.swift index 899cbeae..8506c13a 100644 --- a/RxCocoa/OSX/NSButton+Rx.swift +++ b/RxCocoa/OSX/NSButton+Rx.swift @@ -13,7 +13,7 @@ import RxSwift import Cocoa extension NSButton { - public var rx_tap: Observable { + public var rx_tap: ControlEvent { return rx_controlEvents } } \ No newline at end of file diff --git a/RxCocoa/OSX/NSControl+Rx.swift b/RxCocoa/OSX/NSControl+Rx.swift index 54cf7983..192d4daf 100644 --- a/RxCocoa/OSX/NSControl+Rx.swift +++ b/RxCocoa/OSX/NSControl+Rx.swift @@ -14,8 +14,8 @@ import RxSwift extension NSControl { - public var rx_controlEvents: Observable { - return AnonymousObservable { observer in + public var rx_controlEvents: ControlEvent { + let source: Observable = AnonymousObservable { observer in MainScheduler.ensureExecutingOnScheduler() let observer = ControlTarget(control: self) { control in @@ -23,19 +23,32 @@ extension NSControl { } return observer - } + }.takeUntil(rx_deallocated) + + return ControlEvent(source: source) } - func rx_value(getValue: () -> T) -> Observable { - return AnonymousObservable { observer in - sendNext(observer, getValue()) + func rx_value(getter getter: () -> T, setter: T -> Void) -> ControlProperty { + let source: Observable = AnonymousObservable { observer in + sendNext(observer, getter()) let observer = ControlTarget(control: self) { control in - sendNext(observer, getValue()) + sendNext(observer, getter()) } return observer - } + }.takeUntil(rx_deallocated) + + return ControlProperty(source: source, observer: ObserverOf { event in + switch event { + case .Next(let value): + setter(value) + case .Error(let error): + bindingErrorToInterface(error) + case .Completed: + break + } + }) } } \ No newline at end of file diff --git a/RxCocoa/OSX/NSImageView+Rx.swift b/RxCocoa/OSX/NSImageView+Rx.swift index 15d8840c..678e2fa2 100644 --- a/RxCocoa/OSX/NSImageView+Rx.swift +++ b/RxCocoa/OSX/NSImageView+Rx.swift @@ -13,37 +13,36 @@ import RxSwift import Cocoa extension NSImageView { - public func rx_subscribeImageTo(source: Observable) -> Disposable { - return rx_subscribeImageTo(false)(source: source) + + public var rx_image: ObserverOf { + return self.rx_imageAnimated(false) } - public func rx_subscribeImageTo - (animated: Bool) - (source: Observable) -> Disposable { + public func rx_imageAnimated(animated: Bool) -> ObserverOf { + return ObserverOf { [weak self] event in MainScheduler.ensureExecutingOnScheduler() - return source.subscribe(AnonymousObserver { event in - switch event { - case .Next(let value): - if animated && value != nil { - let transition = CATransition() - transition.duration = 0.25 - transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) - transition.type = kCATransitionFade - self.layer!.addAnimation(transition, forKey: kCATransition) - } - else { - self.layer!.removeAllAnimations() - } - self.image = value - case .Error(let error): - #if DEBUG - rxFatalError("Binding error to textbox: \(error)") - #endif - break - case .Completed: - break + switch event { + case .Next(let boxedValue): + let value = boxedValue + if animated && value != nil { + let transition = CATransition() + transition.duration = 0.25 + transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) + transition.type = kCATransitionFade + self?.layer?.addAnimation(transition, forKey: kCATransition) } - }) + else { + self?.layer?.removeAllAnimations() + } + self?.image = value + case .Error(let error): + bindingErrorToInterface(error) + break + case .Completed: + break + } + } } + } diff --git a/RxCocoa/OSX/NSSlider+Rx.swift b/RxCocoa/OSX/NSSlider+Rx.swift index 914543ef..15c03d7d 100644 --- a/RxCocoa/OSX/NSSlider+Rx.swift +++ b/RxCocoa/OSX/NSSlider+Rx.swift @@ -13,11 +13,13 @@ import RxSwift import Cocoa extension NSSlider { - public var rx_value: Observable { - - return rx_value { [weak self] in + + public var rx_value: ControlProperty { + return rx_value(getter: { [weak self] in return self?.doubleValue ?? 0 - } - + }, setter: { [weak self] value in + self?.doubleValue = value + }) } + } \ No newline at end of file diff --git a/RxCocoa/OSX/NSTextField+Rx.swift b/RxCocoa/OSX/NSTextField+Rx.swift index 36a8b83f..8f31c631 100644 --- a/RxCocoa/OSX/NSTextField+Rx.swift +++ b/RxCocoa/OSX/NSTextField+Rx.swift @@ -39,40 +39,28 @@ class RxTextFieldDelegate : DelegateProxy let textField: NSTextField = castOrFatalError(object) textField.delegate = castOptionalOrFatalError(delegate) } -} - -extension ObservableType where E == String { - public func subscribeTextOf(textField: NSTextField) -> Disposable { - return self.subscribe { event in - MainScheduler.ensureExecutingOnScheduler() - - switch event { - case .Next(let value): - textField.stringValue = value - case .Error(let error): - #if DEBUG - rxFatalError("Binding error to textbox: \(error)") - #endif - break - case .Completed: - break - } - } - } + } extension NSTextField { - public func rx_subscribeTextTo(source: Observable) -> Disposable { - return source.subscribe(AnonymousObserver { event in + + public var rx_delegate: DelegateProxy { + return proxyForObject(self) as RxTextFieldDelegate + } + + public var rx_text: ControlProperty { + let delegate = proxyForObject(self) as RxTextFieldDelegate + + let source = delegate.textSubject + + return ControlProperty(source: source, observer: ObserverOf { [weak self] event in MainScheduler.ensureExecutingOnScheduler() switch event { case .Next(let value): - self.stringValue = value + self?.stringValue = value case .Error(let error): - #if DEBUG - rxFatalError("Binding error to textbox: \(error)") - #endif + bindingErrorToInterface(error) break case .Completed: break @@ -80,13 +68,4 @@ extension NSTextField { }) } - public var rx_delegate: DelegateProxy { - return proxyForObject(self) as RxTextFieldDelegate - } - - public var rx_text: Observable { - let delegate = proxyForObject(self) as RxTextFieldDelegate - - return delegate.textSubject - } } diff --git a/RxCocoa/iOS/UIActionSheet+Rx.swift b/RxCocoa/iOS/UIActionSheet+Rx.swift index 979e5e21..373b002a 100644 --- a/RxCocoa/iOS/UIActionSheet+Rx.swift +++ b/RxCocoa/iOS/UIActionSheet+Rx.swift @@ -18,24 +18,30 @@ extension UIActionSheet { return proxyForObject(self) as RxActionSheetDelegateProxy } - public var rx_clickedButtonAtIndex: Observable { - return rx_delegate.observe("actionSheet:clickedButtonAtIndex:") + public var rx_clickedButtonAtIndex: ControlEvent { + let source = rx_delegate.observe("actionSheet:clickedButtonAtIndex:") .map { a in return a[1] as! Int } + + return ControlEvent(source: source) } - public var rx_willDismissWithButtonIndex: Observable { - return rx_delegate.observe("actionSheet:willDismissWithButtonIndex:") + public var rx_willDismissWithButtonIndex: ControlEvent { + let source = rx_delegate.observe("actionSheet:willDismissWithButtonIndex:") .map { a in return a[1] as! Int } + + return ControlEvent(source: source) } - public var rx_didDismissWithButtonIndex: Observable { - return rx_delegate.observe("actionSheet:didDismissWithButtonIndex:") + public var rx_didDismissWithButtonIndex: ControlEvent { + let source = rx_delegate.observe("actionSheet:didDismissWithButtonIndex:") .map { a in return a[1] as! Int } + + return ControlEvent(source: source) } } \ No newline at end of file diff --git a/RxCocoa/iOS/UIAlertView+Rx.swift b/RxCocoa/iOS/UIAlertView+Rx.swift index d4414a35..a5c874a3 100644 --- a/RxCocoa/iOS/UIAlertView+Rx.swift +++ b/RxCocoa/iOS/UIAlertView+Rx.swift @@ -18,24 +18,30 @@ extension UIAlertView { return proxyForObject(self) as RxAlertViewDelegateProxy } - public var rx_clickedButtonAtIndex: Observable { - return rx_delegate.observe("alertView:clickedButtonAtIndex:") + public var rx_clickedButtonAtIndex: ControlEvent { + let source = rx_delegate.observe("alertView:clickedButtonAtIndex:") .map { a in return a[1] as! Int } + + return ControlEvent(source: source) } - public var rx_willDismissWithButtonIndex: Observable { - return rx_delegate.observe("alertView:willDismissWithButtonIndex:") + public var rx_willDismissWithButtonIndex: ControlEvent { + let source = rx_delegate.observe("alertView:willDismissWithButtonIndex:") .map { a in return a[1] as! Int } + + return ControlEvent(source: source) } - public var rx_didDismissWithButtonIndex: Observable { - return rx_delegate.observe("alertView:didDismissWithButtonIndex:") + public var rx_didDismissWithButtonIndex: ControlEvent { + let source = rx_delegate.observe("alertView:didDismissWithButtonIndex:") .map { a in return a[1] as! Int } + + return ControlEvent(source: source) } } diff --git a/RxCocoa/iOS/UIBarButtonItem+Rx.swift b/RxCocoa/iOS/UIBarButtonItem+Rx.swift index a9cc7a6a..f95ca2bb 100644 --- a/RxCocoa/iOS/UIBarButtonItem+Rx.swift +++ b/RxCocoa/iOS/UIBarButtonItem+Rx.swift @@ -13,13 +13,15 @@ import RxSwift extension UIBarButtonItem { - public var rx_tap: Observable { - return AnonymousObservable { observer in + public var rx_tap: ControlEvent { + let source: Observable = AnonymousObservable { observer in let target = BarButtonItemTarget(barButtonItem: self) { sendNext(observer, ()) } return target - } .takeUntil(rx_deallocated) + }.takeUntil(rx_deallocated) + + return ControlEvent(source: source) } } diff --git a/RxCocoa/iOS/UIButton+Rx.swift b/RxCocoa/iOS/UIButton+Rx.swift index 57090678..dfcef9a8 100644 --- a/RxCocoa/iOS/UIButton+Rx.swift +++ b/RxCocoa/iOS/UIButton+Rx.swift @@ -13,7 +13,9 @@ import RxSwift import UIKit extension UIButton { - public var rx_tap: Observable { + + public var rx_tap: ControlEvent { return rx_controlEvents(.TouchUpInside) } + } \ No newline at end of file diff --git a/RxCocoa/iOS/UICollectionView+Rx.swift b/RxCocoa/iOS/UICollectionView+Rx.swift index eb940c1b..b3729b1c 100644 --- a/RxCocoa/iOS/UICollectionView+Rx.swift +++ b/RxCocoa/iOS/UICollectionView+Rx.swift @@ -12,45 +12,43 @@ import RxSwift #endif import UIKit -extension ObservableType { - // data source - - // Registers reactive data source with collection view. - // Difference between reactive data source and UICollectionViewDataSource is that reactive - // has additional method: - // - // ``` - // func collectionView(collectionView: UICollectionView, observedEvent: Event) -> Void - // ``` - // - // If you want to register non reactive data source, please use `rx_setDataSource` method - public func subscribe where E == DataSource.Element>(collectionView: UICollectionView, withReactiveDataSource dataSource: DataSource) - -> Disposable { - return self.subscribeProxyDataSourceForObject(collectionView, dataSource: dataSource, retainDataSource: false) { (_: RxCollectionViewDataSourceProxy, event) -> Void in - dataSource.collectionView(collectionView, observedEvent: event) - } - } -} +// Items -extension ObservableType where E: SequenceType { - // `reloadData` - items subscription methods (it's assumed that there is one section, and it is typed `Void`) +extension UICollectionView { - public func subscribeItemsOf(collectionView: UICollectionView, cellFactory: (UICollectionView, Int, E.Generator.Element) -> UICollectionViewCell) + public func rx_itemsWithCellFactory + (source: O) + (cellFactory: (UICollectionView, Int, S.Generator.Element) -> UICollectionViewCell) -> Disposable { - let dataSource = RxCollectionViewReactiveArrayDataSourceSequenceWrapper(cellFactory: cellFactory) - return self.subscribe(collectionView, withReactiveDataSource: dataSource) + let dataSource = RxCollectionViewReactiveArrayDataSourceSequenceWrapper(cellFactory: cellFactory) + return self.rx_itemsWithDataSource(dataSource)(source: source) } - public func subscribeItemsOf(collectionView: UICollectionView, withCellIdentifier cellIdentifier: String, configureCell: (Int, E.Generator.Element, Cell) -> Void) + public func rx_itemsWithCellIdentifier + (cellIdentifier: String) + (source: O) + (configureCell: (Int, S.Generator.Element, Cell) -> Void) -> Disposable { - let dataSource = RxCollectionViewReactiveArrayDataSourceSequenceWrapper { (cv, i, item) in + let dataSource = RxCollectionViewReactiveArrayDataSourceSequenceWrapper { (cv, i, item) in let indexPath = NSIndexPath(forItem: i, inSection: 0) let cell = cv.dequeueReusableCellWithReuseIdentifier(cellIdentifier, forIndexPath: indexPath) as! Cell configureCell(i, item, cell) return cell } - return self.subscribe(collectionView, withReactiveDataSource: dataSource) + return self.rx_itemsWithDataSource(dataSource)(source: source) + } + + public func rx_itemsWithDataSource, S: SequenceType, O: ObservableType where DataSource.Element == S, O.E == S> + (dataSource: DataSource) + (source: O) + -> Disposable { + return source.subscribeProxyDataSourceForObject(self, dataSource: dataSource, retainDataSource: false) { [weak self] (_: RxCollectionViewDataSourceProxy, event) -> Void in + guard let collectionView = self else { + return + } + dataSource.collectionView(collectionView, observedEvent: event) + } } } @@ -79,20 +77,24 @@ extension UICollectionView { // events - public var rx_itemSelected: Observable { - return rx_delegate.observe("collectionView:didSelectItemAtIndexPath:") + public var rx_itemSelected: ControlEvent { + let source = rx_delegate.observe("collectionView:didSelectItemAtIndexPath:") .map { a in return a[1] as! NSIndexPath } + + return ControlEvent(source: source) } // typed events - public func rx_modelSelected() -> Observable { - return rx_itemSelected .map { indexPath in + public func rx_modelSelected() -> ControlEvent { + let source: Observable = rx_itemSelected .map { indexPath in let dataSource: RxCollectionViewReactiveArrayDataSource = castOrFatalError(self.rx_dataSource.forwardToDelegate(), message: "This method only works in case one of the `rx_subscribeItemsTo` methods was used.") return dataSource.modelAtIndex(indexPath.item)! } + + return ControlEvent(source: source) } } diff --git a/RxCocoa/iOS/UIControl+Rx.swift b/RxCocoa/iOS/UIControl+Rx.swift index 34c1ad08..57610d21 100644 --- a/RxCocoa/iOS/UIControl+Rx.swift +++ b/RxCocoa/iOS/UIControl+Rx.swift @@ -12,30 +12,25 @@ import RxSwift #endif import UIKit -extension ObservableType where E == Bool { - public func subscribeEnabledOf(control: UIControl) -> Disposable { - weak var weakControl: UIControl? = control - return self.subscribe { event in +extension UIControl { + public var rx_enabled: ObserverOf { + return ObserverOf { [weak self] event in MainScheduler.ensureExecutingOnScheduler() - + switch event { case .Next(let value): - weakControl?.enabled = value + self?.enabled = value case .Error(let error): -#if DEBUG - rxFatalError("Binding error to textbox: \(error)") -#endif + bindingErrorToInterface(error) break case .Completed: break } } } -} - -extension UIControl { - public func rx_controlEvents(controlEvents: UIControlEvents) -> Observable { - return AnonymousObservable { observer in + + public func rx_controlEvents(controlEvents: UIControlEvents) -> ControlEvent { + let source: Observable = AnonymousObservable { observer in MainScheduler.ensureExecutingOnScheduler() let controlTarget = ControlTarget(control: self, controlEvents: controlEvents) { @@ -46,22 +41,38 @@ extension UIControl { return AnonymousDisposable { controlTarget.dispose() } - } .takeUntil(rx_deallocated) + }.takeUntil(rx_deallocated) + + return ControlEvent(source: source) } - func rx_value(getValue: () -> T) -> Observable { - return AnonymousObservable { observer in + func rx_value(getter getter: () -> T, setter: T -> Void) -> ControlProperty { + let source: Observable = AnonymousObservable { observer in - sendNext(observer, getValue()) + sendNext(observer, getter()) let controlTarget = ControlTarget(control: self, controlEvents: UIControlEvents.EditingChanged.union(.ValueChanged)) { control in - sendNext(observer, getValue()) + sendNext(observer, getter()) } return AnonymousDisposable { controlTarget.dispose() } - } .takeUntil(rx_deallocated) + }.takeUntil(rx_deallocated) + + return ControlProperty(source: source, observer: ObserverOf { event in + MainScheduler.ensureExecutingOnScheduler() + + switch event { + case .Next(let value): + setter(value) + case .Error(let error): + bindingErrorToInterface(error) + break + case .Completed: + break + } + }) } } diff --git a/RxCocoa/iOS/UIDatePicker+Rx.swift b/RxCocoa/iOS/UIDatePicker+Rx.swift index 9b74a38a..ec797415 100644 --- a/RxCocoa/iOS/UIDatePicker+Rx.swift +++ b/RxCocoa/iOS/UIDatePicker+Rx.swift @@ -16,8 +16,12 @@ import UIKit extension UIDatePicker { - public var rx_date: Observable { - return rx_value { [unowned self] in self.date } + public var rx_date: ControlProperty { + return rx_value(getter: { [unowned self] in + self.date + }, setter: { [weak self] value in + self?.date = value + }) } } \ No newline at end of file diff --git a/RxCocoa/iOS/UIGestureRecognizer+Rx.swift b/RxCocoa/iOS/UIGestureRecognizer+Rx.swift index 231203b5..108cc241 100644 --- a/RxCocoa/iOS/UIGestureRecognizer+Rx.swift +++ b/RxCocoa/iOS/UIGestureRecognizer+Rx.swift @@ -51,17 +51,19 @@ class GestureTarget: RxTarget { extension UIGestureRecognizer { - public var rx_event: Observable { - return AnonymousObservable { observer in + public var rx_event: ControlEvent { + let source: Observable = AnonymousObservable { [weak self] observer in MainScheduler.ensureExecutingOnScheduler() - let observer = GestureTarget(self) { + let observer = GestureTarget(self!) { control in - sendNext(observer, self) + sendNext(observer, self!) } return observer - } .takeUntil(rx_deallocated) + }.takeUntil(rx_deallocated) + + return ControlEvent(source: source) } } \ No newline at end of file diff --git a/RxCocoa/iOS/UIImageView+Rx.swift b/RxCocoa/iOS/UIImageView+Rx.swift index 4a105295..fb25901e 100644 --- a/RxCocoa/iOS/UIImageView+Rx.swift +++ b/RxCocoa/iOS/UIImageView+Rx.swift @@ -12,13 +12,14 @@ import RxSwift #endif import UIKit -extension ObservableType where E == UIImage? { - public func subscribeImageOf(imageView: UIImageView) -> Disposable { - return subscribeImageOf(imageView, animated: false) +extension UIImageView { + + public var rx_image: ObserverOf { + return self.rx_imageAnimated(false) } - public func subscribeImageOf(imageView: UIImageView, animated: Bool) -> Disposable { - return self.subscribe { event in + public func rx_imageAnimated(animated: Bool) -> ObserverOf { + return ObserverOf { [weak self] event in MainScheduler.ensureExecutingOnScheduler() switch event { @@ -28,12 +29,12 @@ extension ObservableType where E == UIImage? { transition.duration = 0.25 transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) transition.type = kCATransitionFade - imageView.layer.addAnimation(transition, forKey: kCATransition) + self?.layer.addAnimation(transition, forKey: kCATransition) } else { - imageView.layer.removeAllAnimations() + self?.layer.removeAllAnimations() } - imageView.image = value + self?.image = value case .Error(let error): bindingErrorToInterface(error) break @@ -42,7 +43,5 @@ extension ObservableType where E == UIImage? { } } } -} - -extension UIImageView { + } diff --git a/RxCocoa/iOS/UILabel+Rx.swift b/RxCocoa/iOS/UILabel+Rx.swift index dc637b1d..1a2a1205 100644 --- a/RxCocoa/iOS/UILabel+Rx.swift +++ b/RxCocoa/iOS/UILabel+Rx.swift @@ -12,25 +12,22 @@ import RxSwift #endif import UIKit -extension ObservableType where E == String { - public func subscribeTextOf(label: UILabel) -> Disposable { - return self.subscribe { event in +extension UILabel { + + public var rx_text: ObserverOf { + return ObserverOf { [weak self] event in MainScheduler.ensureExecutingOnScheduler() switch event { case .Next(let value): - label.text = value + self?.text = value case .Error(let error): -#if DEBUG - rxFatalError("Binding error to textbox: \(error)") -#endif + bindingErrorToInterface(error) break case .Completed: break } } } -} - -extension UILabel { + } \ No newline at end of file diff --git a/RxCocoa/iOS/UIScrollView+Rx.swift b/RxCocoa/iOS/UIScrollView+Rx.swift index f1e326d6..d919a8da 100644 --- a/RxCocoa/iOS/UIScrollView+Rx.swift +++ b/RxCocoa/iOS/UIScrollView+Rx.swift @@ -28,10 +28,19 @@ extension UIScrollView { // properties - public var rx_contentOffset: Observable { + public var rx_contentOffset: ControlProperty { let proxy = proxyForObject(self) as RxScrollViewDelegateProxy - return proxy.contentOffsetSubject + return ControlProperty(source: proxy.contentOffsetSubject, observer: ObserverOf { [weak self] event in + switch event { + case .Next(let value): + self?.contentOffset = value + case .Error(let error): + bindingErrorToInterface(error) + case .Completed: + break + } + }) } // delegate diff --git a/RxCocoa/iOS/UISearchBar+Rx.swift b/RxCocoa/iOS/UISearchBar+Rx.swift index b4551511..329fb74f 100644 --- a/RxCocoa/iOS/UISearchBar+Rx.swift +++ b/RxCocoa/iOS/UISearchBar+Rx.swift @@ -20,8 +20,8 @@ extension UISearchBar { return proxyForObject(self) as RxSearchBarDelegateProxy } - public var rx_searchText: Observable { - return deferred { [weak self] in + public var rx_searchText: ControlProperty { + let source: Observable = deferred { [weak self] in let text = self?.text ?? "" return (self?.rx_delegate.observe("searchBar:textDidChange:") ?? empty()) @@ -30,5 +30,16 @@ extension UISearchBar { } .startWith(text) } + + return ControlProperty(source: source, observer: ObserverOf { [weak self] event in + switch event { + case .Next(let value): + self?.text = value + case .Error(let error): + bindingErrorToInterface(error) + case .Completed: + break + } + }) } } \ No newline at end of file diff --git a/RxCocoa/iOS/UISegmentedControl+Rx.swift b/RxCocoa/iOS/UISegmentedControl+Rx.swift index 245ea177..90c4d25b 100644 --- a/RxCocoa/iOS/UISegmentedControl+Rx.swift +++ b/RxCocoa/iOS/UISegmentedControl+Rx.swift @@ -14,8 +14,12 @@ import RxSwift extension UISegmentedControl { - public var rx_value: Observable { - return rx_value { [unowned self] in self.selectedSegmentIndex } + public var rx_value: ControlProperty { + return rx_value(getter: { [unowned self] in + self.selectedSegmentIndex + }, setter: { [weak self] value in + self?.selectedSegmentIndex = value + }) } } \ No newline at end of file diff --git a/RxCocoa/iOS/UISlider+Rx.swift b/RxCocoa/iOS/UISlider+Rx.swift index 4869530b..70a48721 100644 --- a/RxCocoa/iOS/UISlider+Rx.swift +++ b/RxCocoa/iOS/UISlider+Rx.swift @@ -13,7 +13,13 @@ import RxSwift import UIKit extension UISlider { - public var rx_value: Observable { - return rx_value { [unowned self] in self.value } + + public var rx_value: ControlProperty { + return rx_value(getter: { [unowned self] in + self.value + }, setter: { [weak self] value in + self?.value = value + }) } + } \ No newline at end of file diff --git a/RxCocoa/iOS/UISwitch+Rx.swift b/RxCocoa/iOS/UISwitch+Rx.swift index 66474d70..e9e2fc8f 100644 --- a/RxCocoa/iOS/UISwitch+Rx.swift +++ b/RxCocoa/iOS/UISwitch+Rx.swift @@ -14,8 +14,12 @@ import RxSwift extension UISwitch { - public var rx_value: Observable { - return rx_value { [unowned self] in self.on } + public var rx_value: ControlProperty { + return rx_value(getter: { [unowned self] in + return self.on + }, setter: { [weak self] value in + self?.on = value + }) } } \ No newline at end of file diff --git a/RxCocoa/iOS/UITableView+Rx.swift b/RxCocoa/iOS/UITableView+Rx.swift index fd7d06fe..148ee10c 100644 --- a/RxCocoa/iOS/UITableView+Rx.swift +++ b/RxCocoa/iOS/UITableView+Rx.swift @@ -12,46 +12,43 @@ import RxSwift #endif import UIKit +// Items -extension ObservableType { - // data source - - // Registers reactive data source with table view. - // Difference between reactive data source and UITableViewDataSource is that reactive - // has additional method: - // - // ``` - // func tableView(tableView: UITableView, observedEvent: Event) -> Void - // ``` - // - // If you want to register non reactive data source, please use `rx_setDataSource` method - public func subscribe where E == DataSource.Element>(tableView: UITableView, withReactiveDataSource dataSource: DataSource) +extension UITableView { + public func rx_itemsWithCellFactory + (source: O) + (cellFactory: (UITableView, Int, S.Generator.Element) -> UITableViewCell) -> Disposable { - return self.subscribeProxyDataSourceForObject(tableView, dataSource: dataSource, retainDataSource: false) { (_: RxTableViewDataSourceProxy, event) -> Void in - dataSource.tableView(tableView, observedEvent: event) - } + let dataSource = RxTableViewReactiveArrayDataSourceSequenceWrapper(cellFactory: cellFactory) + + return self.rx_itemsWithDataSource(dataSource)(source: source) } -} -extension ObservableType where E: SequenceType { - // `reloadData` - items subscription methods (it's assumed that there is one section, and it is typed `Void`) - - public func subscribeItemsOf(tableView: UITableView, cellFactory: (UITableView, Int, E.Generator.Element) -> UITableViewCell) + public func rx_itemsWithCellIdentifier + (cellIdentifier: String) + (source: O) + (configureCell: (Int, S.Generator.Element, Cell) -> Void) -> Disposable { - let dataSource = RxTableViewReactiveArrayDataSourceSequenceWrapper(cellFactory: cellFactory) - return self.subscribe(tableView, withReactiveDataSource: dataSource) - } - - public func subscribeItemsOf(tableView: UITableView, withCellIdentifier cellIdentifier: String, configureCell: (Int, E.Generator.Element, Cell) -> Void) - -> Disposable { - let dataSource = RxTableViewReactiveArrayDataSourceSequenceWrapper { (tv, i, item) in + let dataSource = RxTableViewReactiveArrayDataSourceSequenceWrapper { (tv, i, item) in let indexPath = NSIndexPath(forItem: i, inSection: 0) let cell = tv.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! Cell configureCell(i, item, cell) return cell } - return self.subscribe(tableView, withReactiveDataSource: dataSource) + return self.rx_itemsWithDataSource(dataSource)(source: source) + } + + public func rx_itemsWithDataSource, S: SequenceType, O: ObservableType where DataSource.Element == S, O.E == S> + (dataSource: DataSource) + (source: O) + -> Disposable { + return source.subscribeProxyDataSourceForObject(self, dataSource: dataSource, retainDataSource: false) { [weak self] (_: RxTableViewDataSourceProxy, event) -> Void in + guard let tableView = self else { + return + } + dataSource.tableView(tableView, observedEvent: event) + } } } @@ -79,48 +76,58 @@ extension UITableView { // events - public var rx_itemSelected: Observable { - return rx_delegate.observe("tableView:didSelectRowAtIndexPath:") + public var rx_itemSelected: ControlEvent { + let source = rx_delegate.observe("tableView:didSelectRowAtIndexPath:") .map { a in return a[1] as! NSIndexPath } + + return ControlEvent(source: source) } - public var rx_itemInserted: Observable { - return rx_dataSource.observe("tableView:commitEditingStyle:forRowAtIndexPath:") + public var rx_itemInserted: ControlEvent { + let source = rx_dataSource.observe("tableView:commitEditingStyle:forRowAtIndexPath:") .filter { a in return UITableViewCellEditingStyle(rawValue: (a[1] as! NSNumber).integerValue) == .Insert } .map { a in return (a[2] as! NSIndexPath) } + + return ControlEvent(source: source) } - public var rx_itemDeleted: Observable { - return rx_dataSource.observe("tableView:commitEditingStyle:forRowAtIndexPath:") + public var rx_itemDeleted: ControlEvent { + let source = rx_dataSource.observe("tableView:commitEditingStyle:forRowAtIndexPath:") .filter { a in return UITableViewCellEditingStyle(rawValue: (a[1] as! NSNumber).integerValue) == .Delete } .map { a in return (a[2] as! NSIndexPath) } + + return ControlEvent(source: source) } - public var rx_itemMoved: Observable { - return rx_dataSource.observe("tableView:moveRowAtIndexPath:toIndexPath:") + public var rx_itemMoved: ControlEvent { + let source: Observable = rx_dataSource.observe("tableView:moveRowAtIndexPath:toIndexPath:") .map { a in return ((a[1] as! NSIndexPath), (a[2] as! NSIndexPath)) } + + return ControlEvent(source: source) } // typed events // This method only works in case one of the `rx_subscribeItemsTo` methods was used. - public func rx_modelSelected() -> Observable { - return rx_itemSelected .map { ip in + public func rx_modelSelected() -> ControlEvent { + let source: Observable = rx_itemSelected.map { ip in let dataSource: RxTableViewReactiveArrayDataSource = castOrFatalError(self.rx_dataSource.forwardToDelegate(), message: "This method only works in case one of the `rx_subscribeItemsTo` methods was used.") return dataSource.modelAtIndex(ip.item)! } + + return ControlEvent(source: source) } } \ No newline at end of file diff --git a/RxCocoa/iOS/UITextField+Rx.swift b/RxCocoa/iOS/UITextField+Rx.swift index 10d4c9b4..e8cea294 100644 --- a/RxCocoa/iOS/UITextField+Rx.swift +++ b/RxCocoa/iOS/UITextField+Rx.swift @@ -13,9 +13,13 @@ import RxSwift import UIKit extension UITextField { - public var rx_text: Observable { - return rx_value { [weak self] in + + public var rx_text: ControlProperty { + return rx_value(getter: { [weak self] in self?.text ?? "" - } + }, setter: { [weak self] value in + self?.text = value + }) } + } \ No newline at end of file diff --git a/RxCocoa/iOS/UITextView+Rx.swift b/RxCocoa/iOS/UITextView+Rx.swift index 9c4584d2..a23006f7 100644 --- a/RxCocoa/iOS/UITextView+Rx.swift +++ b/RxCocoa/iOS/UITextView+Rx.swift @@ -18,15 +18,26 @@ extension UITextView { return RxTextViewDelegateProxy(parentObject: self) } - public var rx_text: Observable { - return deferred { [weak self] in + public var rx_text: ControlProperty { + let source: Observable = deferred { [weak self] in let text = self?.text ?? "" return (self?.rx_delegate.observe("textViewDidChange:") ?? empty()) .map { a in return (a[0] as? UITextView)?.text ?? "" } .startWith(text) - } + } + + return ControlProperty(source: source, observer: ObserverOf { [weak self] event in + switch event { + case .Next(let value): + self?.text = value + case .Error(let error): + bindingErrorToInterface(error) + case .Completed: + break + } + }) } } diff --git a/RxDataSourceStarterKit/DataSources/RxCollectionViewSectionedAnimatedDataSource.swift b/RxDataSourceStarterKit/DataSources/RxCollectionViewSectionedAnimatedDataSource.swift index 31666296..6b9c952c 100644 --- a/RxDataSourceStarterKit/DataSources/RxCollectionViewSectionedAnimatedDataSource.swift +++ b/RxDataSourceStarterKit/DataSources/RxCollectionViewSectionedAnimatedDataSource.swift @@ -36,10 +36,8 @@ class RxCollectionViewSectionedAnimatedDataSource : RxColle setSections(c.finalSections) collectionView.performBatchUpdates(c) } - case .Error: - #if DEBUG - fatalError("Binding error to UI") - #endif + case .Error(let error): + bindingErrorToInterface(error) case .Completed: break } diff --git a/RxDataSourceStarterKit/DataSources/RxCollectionViewSectionedReloadDataSource.swift b/RxDataSourceStarterKit/DataSources/RxCollectionViewSectionedReloadDataSource.swift index c04f9d0b..fb62fe92 100644 --- a/RxDataSourceStarterKit/DataSources/RxCollectionViewSectionedReloadDataSource.swift +++ b/RxDataSourceStarterKit/DataSources/RxCollectionViewSectionedReloadDataSource.swift @@ -22,10 +22,8 @@ class RxCollectionViewSectionedReloadDataSource : RxCollect case .Next(let element): setSections(element) collectionView.reloadData() - case .Error: - #if DEBUG - fatalError("Binding error to UI") - #endif + case .Error(let error): + bindingErrorToInterface(error) case .Completed: break } diff --git a/RxDataSourceStarterKit/DataSources/RxTableViewSectionedAnimatedDataSource.swift b/RxDataSourceStarterKit/DataSources/RxTableViewSectionedAnimatedDataSource.swift index aac2e43c..05956a87 100644 --- a/RxDataSourceStarterKit/DataSources/RxTableViewSectionedAnimatedDataSource.swift +++ b/RxDataSourceStarterKit/DataSources/RxTableViewSectionedAnimatedDataSource.swift @@ -25,10 +25,8 @@ class RxTableViewSectionedAnimatedDataSource : RxTableViewS setSections(c.finalSections) tableView.performBatchUpdates(c) } - case .Error(_): - #if DEBUG - fatalError("Binding error to UI") - #endif + case .Error(let error): + bindingErrorToInterface(error) case .Completed: break } diff --git a/RxDataSourceStarterKit/DataSources/RxTableViewSectionedReloadDataSource.swift b/RxDataSourceStarterKit/DataSources/RxTableViewSectionedReloadDataSource.swift index 0c2670b0..b3a5c7e2 100644 --- a/RxDataSourceStarterKit/DataSources/RxTableViewSectionedReloadDataSource.swift +++ b/RxDataSourceStarterKit/DataSources/RxTableViewSectionedReloadDataSource.swift @@ -22,10 +22,8 @@ class RxTableViewSectionedReloadDataSource : RxTableViewSec case .Next(let element): setSections(element) tableView.reloadData() - case .Error(_): - #if DEBUG - fatalError("Binding error to UI") - #endif + case .Error(let error): + bindingErrorToInterface(error) case .Completed: break } diff --git a/RxDataSourceStarterKit/RxDataSourceStarterKit.swift b/RxDataSourceStarterKit/RxDataSourceStarterKit.swift new file mode 100644 index 00000000..8241be5e --- /dev/null +++ b/RxDataSourceStarterKit/RxDataSourceStarterKit.swift @@ -0,0 +1,21 @@ +// +// RxDataSourceStarterKit.swift +// RxExample +// +// Created by Krunoslav Zaher on 8/29/15. +// Copyright © 2015 Krunoslav Zaher. All rights reserved. +// + +import Foundation + +#if !RX_NO_MODULE +func bindingErrorToInterface(error: ErrorType) { + let error = "Binding error to UI: \(error)" + #if DEBUG + fatalError(error) + #else + print(error) + #endif +} + +#endif diff --git a/RxExample/RxExample.xcodeproj/project.pbxproj b/RxExample/RxExample.xcodeproj/project.pbxproj index a8c5c459..ee138b40 100644 --- a/RxExample/RxExample.xcodeproj/project.pbxproj +++ b/RxExample/RxExample.xcodeproj/project.pbxproj @@ -68,61 +68,6 @@ C83367241AD029AE00C668A7 /* HtmlParsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83367111AD029AE00C668A7 /* HtmlParsing.swift */; }; C83367251AD029AE00C668A7 /* ImageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83367121AD029AE00C668A7 /* ImageService.swift */; }; C83367311AD029AE00C668A7 /* Wireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83367211AD029AE00C668A7 /* Wireframe.swift */; }; - C836ECCA1B8A7AA600AB941D /* _RX.m in Sources */ = {isa = PBXBuildFile; fileRef = C836EC811B8A7AA600AB941D /* _RX.m */; }; - C836ECCB1B8A7AA600AB941D /* _RXDelegateProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = C836EC831B8A7AA600AB941D /* _RXDelegateProxy.m */; }; - C836ECCC1B8A7AA600AB941D /* _RXKVOObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = C836EC851B8A7AA600AB941D /* _RXKVOObserver.m */; }; - C836ECCD1B8A7AA600AB941D /* _RXSwizzling.m in Sources */ = {isa = PBXBuildFile; fileRef = C836EC871B8A7AA600AB941D /* _RXSwizzling.m */; }; - C836ECCE1B8A7AA600AB941D /* CLLocationManager+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC881B8A7AA600AB941D /* CLLocationManager+Rx.swift */; }; - C836ECCF1B8A7AA600AB941D /* DelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC891B8A7AA600AB941D /* DelegateProxy.swift */; }; - C836ECD01B8A7AA600AB941D /* DelegateProxyType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC8A1B8A7AA600AB941D /* DelegateProxyType.swift */; }; - C836ECD11B8A7AA600AB941D /* Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC8B1B8A7AA600AB941D /* Logging.swift */; }; - C836ECD21B8A7AA600AB941D /* ControlTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC8E1B8A7AA600AB941D /* ControlTarget.swift */; }; - C836ECD31B8A7AA600AB941D /* Deallocating.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC8F1B8A7AA600AB941D /* Deallocating.swift */; }; - C836ECD41B8A7AA600AB941D /* DeinitAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC901B8A7AA600AB941D /* DeinitAction.swift */; }; - C836ECD51B8A7AA600AB941D /* KVOObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC911B8A7AA600AB941D /* KVOObservable.swift */; }; - C836ECD61B8A7AA600AB941D /* KVOObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC921B8A7AA600AB941D /* KVOObserver.swift */; }; - C836ECD71B8A7AA600AB941D /* NSNotificationCenter+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC931B8A7AA600AB941D /* NSNotificationCenter+Rx.swift */; }; - C836ECD81B8A7AA600AB941D /* NSObject+Rx+CoreGraphics.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC941B8A7AA600AB941D /* NSObject+Rx+CoreGraphics.swift */; }; - C836ECD91B8A7AA600AB941D /* NSObject+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC951B8A7AA600AB941D /* NSObject+Rx.swift */; }; - C836ECDA1B8A7AA600AB941D /* NSURLSession+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC961B8A7AA600AB941D /* NSURLSession+Rx.swift */; }; - C836ECDB1B8A7AA600AB941D /* RxCLLocationManagerDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC981B8A7AA600AB941D /* RxCLLocationManagerDelegateProxy.swift */; }; - C836ECDC1B8A7AA600AB941D /* RxCocoa.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC991B8A7AA600AB941D /* RxCocoa.swift */; }; - C836ECDD1B8A7AA600AB941D /* RxTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC9A1B8A7AA600AB941D /* RxTarget.swift */; }; - C836ECDE1B8A7AA600AB941D /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C836EC9B1B8A7AA600AB941D /* Info.plist */; }; - C836ECDF1B8A7AA600AB941D /* CoreDataEntityEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC9D1B8A7AA600AB941D /* CoreDataEntityEvent.swift */; }; - C836ECE01B8A7AA600AB941D /* RxCollectionViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836EC9F1B8A7AA600AB941D /* RxCollectionViewReactiveArrayDataSource.swift */; }; - C836ECE11B8A7AA600AB941D /* RxTableViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECA01B8A7AA600AB941D /* RxTableViewReactiveArrayDataSource.swift */; }; - C836ECE21B8A7AA600AB941D /* ItemEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECA21B8A7AA600AB941D /* ItemEvents.swift */; }; - C836ECE31B8A7AA600AB941D /* NSManagedObjectContext+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECA31B8A7AA600AB941D /* NSManagedObjectContext+Rx.swift */; }; - C836ECE41B8A7AA600AB941D /* RxCollectionViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECA51B8A7AA600AB941D /* RxCollectionViewDataSourceType.swift */; }; - C836ECE51B8A7AA600AB941D /* RxTableViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECA61B8A7AA600AB941D /* RxTableViewDataSourceType.swift */; }; - C836ECE61B8A7AA600AB941D /* RxActionSheetDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECA81B8A7AA600AB941D /* RxActionSheetDelegateProxy.swift */; }; - C836ECE71B8A7AA600AB941D /* RxAlertViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECA91B8A7AA600AB941D /* RxAlertViewDelegateProxy.swift */; }; - C836ECE81B8A7AA600AB941D /* RxCollectionViewDataSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECAA1B8A7AA600AB941D /* RxCollectionViewDataSourceProxy.swift */; }; - C836ECE91B8A7AA600AB941D /* RxCollectionViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECAB1B8A7AA600AB941D /* RxCollectionViewDelegateProxy.swift */; }; - C836ECEA1B8A7AA600AB941D /* RxScrollViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECAC1B8A7AA600AB941D /* RxScrollViewDelegateProxy.swift */; }; - C836ECEB1B8A7AA600AB941D /* RxSearchBarDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECAD1B8A7AA600AB941D /* RxSearchBarDelegateProxy.swift */; }; - C836ECEC1B8A7AA600AB941D /* RxTableViewDataSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECAE1B8A7AA600AB941D /* RxTableViewDataSourceProxy.swift */; }; - C836ECED1B8A7AA600AB941D /* RxTableViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECAF1B8A7AA600AB941D /* RxTableViewDelegateProxy.swift */; }; - C836ECEE1B8A7AA600AB941D /* RxTextViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECB01B8A7AA600AB941D /* RxTextViewDelegateProxy.swift */; }; - C836ECEF1B8A7AA600AB941D /* UIActionSheet+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECB11B8A7AA600AB941D /* UIActionSheet+Rx.swift */; }; - C836ECF01B8A7AA600AB941D /* UIAlertView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECB21B8A7AA600AB941D /* UIAlertView+Rx.swift */; }; - C836ECF11B8A7AA600AB941D /* UIBarButtonItem+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECB31B8A7AA600AB941D /* UIBarButtonItem+Rx.swift */; }; - C836ECF21B8A7AA600AB941D /* UIButton+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECB41B8A7AA600AB941D /* UIButton+Rx.swift */; }; - C836ECF31B8A7AA600AB941D /* UICollectionView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECB51B8A7AA600AB941D /* UICollectionView+Rx.swift */; }; - C836ECF41B8A7AA600AB941D /* UIControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECB61B8A7AA600AB941D /* UIControl+Rx.swift */; }; - C836ECF51B8A7AA600AB941D /* UIDatePicker+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECB71B8A7AA600AB941D /* UIDatePicker+Rx.swift */; }; - C836ECF61B8A7AA600AB941D /* UIGestureRecognizer+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECB81B8A7AA600AB941D /* UIGestureRecognizer+Rx.swift */; }; - C836ECF71B8A7AA600AB941D /* UIImageView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECB91B8A7AA600AB941D /* UIImageView+Rx.swift */; }; - C836ECF81B8A7AA600AB941D /* UILabel+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECBA1B8A7AA600AB941D /* UILabel+Rx.swift */; }; - C836ECF91B8A7AA600AB941D /* UIScrollView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECBB1B8A7AA600AB941D /* UIScrollView+Rx.swift */; }; - C836ECFA1B8A7AA600AB941D /* UISearchBar+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECBC1B8A7AA600AB941D /* UISearchBar+Rx.swift */; }; - C836ECFB1B8A7AA600AB941D /* UISegmentedControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECBD1B8A7AA600AB941D /* UISegmentedControl+Rx.swift */; }; - C836ECFC1B8A7AA600AB941D /* UISlider+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECBE1B8A7AA600AB941D /* UISlider+Rx.swift */; }; - C836ECFD1B8A7AA600AB941D /* UISwitch+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECBF1B8A7AA600AB941D /* UISwitch+Rx.swift */; }; - C836ECFE1B8A7AA600AB941D /* UITableView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECC01B8A7AA600AB941D /* UITableView+Rx.swift */; }; - C836ECFF1B8A7AA600AB941D /* UITextField+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECC11B8A7AA600AB941D /* UITextField+Rx.swift */; }; - C836ED001B8A7AA600AB941D /* UITextView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C836ECC21B8A7AA600AB941D /* UITextView+Rx.swift */; }; C84B91381B8A282000C9CCCF /* RxTableViewSectionedAnimatedDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88C78631B3EB0A00061C5AB /* RxTableViewSectionedAnimatedDataSource.swift */; }; C84B91391B8A282000C9CCCF /* RxTableViewSectionedDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88C78641B3EB0A00061C5AB /* RxTableViewSectionedDataSource.swift */; }; C84B913A1B8A282000C9CCCF /* RxTableViewSectionedReloadDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88C78651B3EB0A00061C5AB /* RxTableViewSectionedReloadDataSource.swift */; }; @@ -165,122 +110,182 @@ C8A468F21B8A8C2600BF917B /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A468ED1B8A8BCC00BF917B /* RxCocoa.framework */; }; C8A468F31B8A8C2600BF917B /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A468EB1B8A8BC900BF917B /* RxSwift.framework */; }; C8A57F741B40AF7C00D5570A /* Random.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = C8A57F721B40AF7C00D5570A /* Random.xcdatamodeld */; }; - C8C3DA911B944DE3004D233E /* AnyObject+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA151B944DE3004D233E /* AnyObject+Rx.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DA921B944DE3004D233E /* Cancelable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA161B944DE3004D233E /* Cancelable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DA931B944DE3004D233E /* AsyncLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA181B944DE3004D233E /* AsyncLock.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DA941B944DE3004D233E /* Lock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA191B944DE3004D233E /* Lock.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DA951B944DE3004D233E /* ConnectableObservableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA1A1B944DE3004D233E /* ConnectableObservableType.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DA961B944DE3004D233E /* Bag.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA1C1B944DE3004D233E /* Bag.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DA971B944DE3004D233E /* InfiniteSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA1D1B944DE3004D233E /* InfiniteSequence.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DA981B944DE3004D233E /* Queue.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA1E1B944DE3004D233E /* Queue.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DA991B944DE3004D233E /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA1F1B944DE3004D233E /* Disposable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DA9A1B944DE3004D233E /* AnonymousDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA211B944DE3004D233E /* AnonymousDisposable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DA9B1B944DE3004D233E /* BinaryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA221B944DE3004D233E /* BinaryDisposable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DA9C1B944DE3004D233E /* BooleanDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA231B944DE3004D233E /* BooleanDisposable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DA9D1B944DE3004D233E /* CompositeDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA241B944DE3004D233E /* CompositeDisposable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DA9E1B944DE3004D233E /* DisposeBag.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA251B944DE3004D233E /* DisposeBag.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DA9F1B944DE3004D233E /* DisposeBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA261B944DE3004D233E /* DisposeBase.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAA01B944DE3004D233E /* NAryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA271B944DE3004D233E /* NAryDisposable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAA11B944DE3004D233E /* NAryDisposable.tt in Resources */ = {isa = PBXBuildFile; fileRef = C8C3DA281B944DE3004D233E /* NAryDisposable.tt */; settings = {ASSET_TAGS = (); }; }; - C8C3DAA21B944DE3004D233E /* NopDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA291B944DE3004D233E /* NopDisposable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAA31B944DE3004D233E /* ScheduledDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA2A1B944DE3004D233E /* ScheduledDisposable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAA41B944DE3004D233E /* ScopedDispose.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA2B1B944DE3004D233E /* ScopedDispose.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAA51B944DE3004D233E /* SerialDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA2C1B944DE3004D233E /* SerialDisposable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAA61B944DE3004D233E /* SingleAssignmentDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA2D1B944DE3004D233E /* SingleAssignmentDisposable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAA71B944DE3004D233E /* StableCompositeDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA2E1B944DE3004D233E /* StableCompositeDisposable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAA81B944DE3004D233E /* TernaryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA2F1B944DE3004D233E /* TernaryDisposable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAA91B944DE3004D233E /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA301B944DE3004D233E /* Error.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAAA1B944DE3004D233E /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA311B944DE3004D233E /* Event.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAAB1B944DE3004D233E /* ImmediateScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA321B944DE3004D233E /* ImmediateScheduler.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAAC1B944DE3004D233E /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C8C3DA331B944DE3004D233E /* Info.plist */; settings = {ASSET_TAGS = (); }; }; - C8C3DAAD1B944DE3004D233E /* Observable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA341B944DE3004D233E /* Observable+Extensions.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAAE1B944DE3004D233E /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA351B944DE3004D233E /* Observable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAAF1B944DE3004D233E /* Amb.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA381B944DE3004D233E /* Amb.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAB01B944DE3004D233E /* AnonymousObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA391B944DE3004D233E /* AnonymousObservable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAB11B944DE3004D233E /* AsObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA3A1B944DE3004D233E /* AsObservable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAB21B944DE3004D233E /* Catch.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA3B1B944DE3004D233E /* Catch.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAB31B944DE3004D233E /* CombineLatest+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA3C1B944DE3004D233E /* CombineLatest+arity.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAB41B944DE3004D233E /* CombineLatest+arity.tt in Resources */ = {isa = PBXBuildFile; fileRef = C8C3DA3D1B944DE3004D233E /* CombineLatest+arity.tt */; settings = {ASSET_TAGS = (); }; }; - C8C3DAB51B944DE3004D233E /* CombineLatest+CollectionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA3E1B944DE3004D233E /* CombineLatest+CollectionType.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAB61B944DE3004D233E /* CombineLatest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA3F1B944DE3004D233E /* CombineLatest.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAB71B944DE3004D233E /* Concat.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA401B944DE3004D233E /* Concat.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAB81B944DE3004D233E /* ConnectableObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA411B944DE3004D233E /* ConnectableObservable.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAB91B944DE3004D233E /* Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA421B944DE3004D233E /* Debug.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DABA1B944DE3004D233E /* Deferred.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA431B944DE3004D233E /* Deferred.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DABB1B944DE3004D233E /* DelaySubscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA441B944DE3004D233E /* DelaySubscription.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DABC1B944DE3004D233E /* DistinctUntilChanged.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA451B944DE3004D233E /* DistinctUntilChanged.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DABD1B944DE3004D233E /* Do.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA461B944DE3004D233E /* Do.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DABE1B944DE3004D233E /* Empty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA471B944DE3004D233E /* Empty.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DABF1B944DE3004D233E /* FailWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA481B944DE3004D233E /* FailWith.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAC01B944DE3004D233E /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA491B944DE3004D233E /* Filter.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAC11B944DE3004D233E /* FlatMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA4A1B944DE3004D233E /* FlatMap.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAC21B944DE3004D233E /* Just.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA4B1B944DE3004D233E /* Just.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAC31B944DE3004D233E /* Map.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA4C1B944DE3004D233E /* Map.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAC41B944DE3004D233E /* Merge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA4D1B944DE3004D233E /* Merge.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAC51B944DE3004D233E /* Multicast.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA4E1B944DE3004D233E /* Multicast.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAC61B944DE3004D233E /* Never.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA4F1B944DE3004D233E /* Never.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAC71B944DE3004D233E /* ObserveOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA501B944DE3004D233E /* ObserveOn.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAC81B944DE3004D233E /* ObserveOnSerialDispatchQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA511B944DE3004D233E /* ObserveOnSerialDispatchQueue.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAC91B944DE3004D233E /* ObserveSingleOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA521B944DE3004D233E /* ObserveSingleOn.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DACA1B944DE3004D233E /* Producer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA531B944DE3004D233E /* Producer.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DACB1B944DE3004D233E /* Reduce.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA541B944DE3004D233E /* Reduce.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DACC1B944DE3004D233E /* RefCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA551B944DE3004D233E /* RefCount.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DACD1B944DE3004D233E /* Sample.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA561B944DE3004D233E /* Sample.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DACE1B944DE3004D233E /* Scan.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA571B944DE3004D233E /* Scan.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DACF1B944DE3004D233E /* Sink.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA581B944DE3004D233E /* Sink.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAD01B944DE3004D233E /* Skip.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA591B944DE3004D233E /* Skip.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAD11B944DE3004D233E /* StartWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA5A1B944DE3004D233E /* StartWith.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAD21B944DE3004D233E /* SubscribeOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA5B1B944DE3004D233E /* SubscribeOn.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAD31B944DE3004D233E /* Switch.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA5C1B944DE3004D233E /* Switch.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAD41B944DE3004D233E /* Take.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA5D1B944DE3004D233E /* Take.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAD51B944DE3004D233E /* TakeUntil.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA5E1B944DE3004D233E /* TakeUntil.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAD61B944DE3004D233E /* TakeWhile.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA5F1B944DE3004D233E /* TakeWhile.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAD71B944DE3004D233E /* Throttle.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA601B944DE3004D233E /* Throttle.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAD81B944DE3004D233E /* Timer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA611B944DE3004D233E /* Timer.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAD91B944DE3004D233E /* Zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA621B944DE3004D233E /* Zip+arity.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DADA1B944DE3004D233E /* Zip+arity.tt in Resources */ = {isa = PBXBuildFile; fileRef = C8C3DA631B944DE3004D233E /* Zip+arity.tt */; settings = {ASSET_TAGS = (); }; }; - C8C3DADB1B944DE3004D233E /* Zip+CollectionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA641B944DE3004D233E /* Zip+CollectionType.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DADC1B944DE3004D233E /* Zip.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA651B944DE3004D233E /* Zip.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DADD1B944DE3004D233E /* Observable+Aggregate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA661B944DE3004D233E /* Observable+Aggregate.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DADE1B944DE3004D233E /* Observable+Binding.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA671B944DE3004D233E /* Observable+Binding.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DADF1B944DE3004D233E /* Observable+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA681B944DE3004D233E /* Observable+Concurrency.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAE01B944DE3004D233E /* Observable+Creation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA691B944DE3004D233E /* Observable+Creation.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAE11B944DE4004D233E /* Observable+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA6A1B944DE3004D233E /* Observable+Debug.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAE21B944DE4004D233E /* Observable+Multiple.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA6B1B944DE3004D233E /* Observable+Multiple.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAE31B944DE4004D233E /* Observable+Single.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA6C1B944DE3004D233E /* Observable+Single.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAE41B944DE4004D233E /* Observable+StandardSequenceOperators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA6D1B944DE3004D233E /* Observable+StandardSequenceOperators.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAE51B944DE4004D233E /* Observable+Time.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA6E1B944DE3004D233E /* Observable+Time.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAE61B944DE4004D233E /* ObservableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA6F1B944DE3004D233E /* ObservableType.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAE71B944DE4004D233E /* Observer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA701B944DE3004D233E /* Observer.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAE81B944DE4004D233E /* ObserverOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA711B944DE3004D233E /* ObserverOf.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAE91B944DE4004D233E /* AnonymousObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA731B944DE3004D233E /* AnonymousObserver.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAEA1B944DE4004D233E /* AutoDetachObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA741B944DE3004D233E /* AutoDetachObserver.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAEB1B944DE4004D233E /* DoneObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA751B944DE3004D233E /* DoneObserver.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAEC1B944DE4004D233E /* NopObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA761B944DE3004D233E /* NopObserver.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAED1B944DE4004D233E /* ObserverBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA771B944DE3004D233E /* ObserverBase.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAEE1B944DE4004D233E /* SafeObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA781B944DE3004D233E /* SafeObserver.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAEF1B944DE4004D233E /* ScheduledObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA791B944DE3004D233E /* ScheduledObserver.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAF01B944DE4004D233E /* TailRecursiveSink.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA7A1B944DE3004D233E /* TailRecursiveSink.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAF11B944DE4004D233E /* ObserverType+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA7B1B944DE3004D233E /* ObserverType+Extensions.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAF21B944DE4004D233E /* ObserverType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA7C1B944DE3004D233E /* ObserverType.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAF31B944DE4004D233E /* Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA7D1B944DE3004D233E /* Rx.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAF41B944DE4004D233E /* RxBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA7E1B944DE3004D233E /* RxBox.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAF51B944DE4004D233E /* RxResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA7F1B944DE3004D233E /* RxResult.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAF61B944DE4004D233E /* Scheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA801B944DE3004D233E /* Scheduler.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAF71B944DE4004D233E /* ConcurrentDispatchQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA821B944DE3004D233E /* ConcurrentDispatchQueueScheduler.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAF81B944DE4004D233E /* CurrentThreadScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA831B944DE3004D233E /* CurrentThreadScheduler.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAF91B944DE4004D233E /* DispatchQueueSchedulerPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA841B944DE3004D233E /* DispatchQueueSchedulerPriority.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAFA1B944DE4004D233E /* MainScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA851B944DE3004D233E /* MainScheduler.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAFB1B944DE4004D233E /* OperationQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA861B944DE3004D233E /* OperationQueueScheduler.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAFC1B944DE4004D233E /* RecursiveScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA871B944DE3004D233E /* RecursiveScheduler.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAFD1B944DE4004D233E /* Scheduler+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA881B944DE3004D233E /* Scheduler+Extensions.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAFE1B944DE4004D233E /* SchedulerServices+Emulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA891B944DE3004D233E /* SchedulerServices+Emulation.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DAFF1B944DE4004D233E /* SerialDispatchQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA8A1B944DE3004D233E /* SerialDispatchQueueScheduler.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DB001B944DE4004D233E /* BehaviorSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA8C1B944DE3004D233E /* BehaviorSubject.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DB011B944DE4004D233E /* PublishSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA8D1B944DE3004D233E /* PublishSubject.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DB021B944DE4004D233E /* ReplaySubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA8E1B944DE3004D233E /* ReplaySubject.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DB031B944DE4004D233E /* SubjectType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA8F1B944DE3004D233E /* SubjectType.swift */; settings = {ASSET_TAGS = (); }; }; - C8C3DB041B944DE4004D233E /* Variable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA901B944DE3004D233E /* Variable.swift */; settings = {ASSET_TAGS = (); }; }; + C8A74F1B1B94E5F400D8D046 /* AnyObject+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74E9F1B94E5F400D8D046 /* AnyObject+Rx.swift */; }; + C8A74F1C1B94E5F400D8D046 /* Cancelable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EA01B94E5F400D8D046 /* Cancelable.swift */; }; + C8A74F1D1B94E5F400D8D046 /* AsyncLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EA21B94E5F400D8D046 /* AsyncLock.swift */; }; + C8A74F1E1B94E5F400D8D046 /* Lock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EA31B94E5F400D8D046 /* Lock.swift */; }; + C8A74F1F1B94E5F400D8D046 /* ConnectableObservableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EA41B94E5F400D8D046 /* ConnectableObservableType.swift */; }; + C8A74F201B94E5F400D8D046 /* Bag.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EA61B94E5F400D8D046 /* Bag.swift */; }; + C8A74F211B94E5F400D8D046 /* InfiniteSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EA71B94E5F400D8D046 /* InfiniteSequence.swift */; }; + C8A74F221B94E5F400D8D046 /* Queue.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EA81B94E5F400D8D046 /* Queue.swift */; }; + C8A74F231B94E5F400D8D046 /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EA91B94E5F400D8D046 /* Disposable.swift */; }; + C8A74F241B94E5F400D8D046 /* AnonymousDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EAB1B94E5F400D8D046 /* AnonymousDisposable.swift */; }; + C8A74F251B94E5F400D8D046 /* BinaryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EAC1B94E5F400D8D046 /* BinaryDisposable.swift */; }; + C8A74F261B94E5F400D8D046 /* BooleanDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EAD1B94E5F400D8D046 /* BooleanDisposable.swift */; }; + C8A74F271B94E5F400D8D046 /* CompositeDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EAE1B94E5F400D8D046 /* CompositeDisposable.swift */; }; + C8A74F281B94E5F400D8D046 /* DisposeBag.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EAF1B94E5F400D8D046 /* DisposeBag.swift */; }; + C8A74F291B94E5F400D8D046 /* DisposeBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EB01B94E5F400D8D046 /* DisposeBase.swift */; }; + C8A74F2A1B94E5F400D8D046 /* NAryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EB11B94E5F400D8D046 /* NAryDisposable.swift */; }; + C8A74F2B1B94E5F400D8D046 /* NAryDisposable.tt in Resources */ = {isa = PBXBuildFile; fileRef = C8A74EB21B94E5F400D8D046 /* NAryDisposable.tt */; }; + C8A74F2C1B94E5F400D8D046 /* NopDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EB31B94E5F400D8D046 /* NopDisposable.swift */; }; + C8A74F2D1B94E5F400D8D046 /* ScheduledDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EB41B94E5F400D8D046 /* ScheduledDisposable.swift */; }; + C8A74F2E1B94E5F400D8D046 /* ScopedDispose.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EB51B94E5F400D8D046 /* ScopedDispose.swift */; }; + C8A74F2F1B94E5F400D8D046 /* SerialDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EB61B94E5F400D8D046 /* SerialDisposable.swift */; }; + C8A74F301B94E5F400D8D046 /* SingleAssignmentDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EB71B94E5F400D8D046 /* SingleAssignmentDisposable.swift */; }; + C8A74F311B94E5F400D8D046 /* StableCompositeDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EB81B94E5F400D8D046 /* StableCompositeDisposable.swift */; }; + C8A74F321B94E5F400D8D046 /* TernaryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EB91B94E5F400D8D046 /* TernaryDisposable.swift */; }; + C8A74F331B94E5F400D8D046 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EBA1B94E5F400D8D046 /* Error.swift */; }; + C8A74F341B94E5F400D8D046 /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EBB1B94E5F400D8D046 /* Event.swift */; }; + C8A74F351B94E5F400D8D046 /* ImmediateScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EBC1B94E5F400D8D046 /* ImmediateScheduler.swift */; }; + C8A74F361B94E5F400D8D046 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C8A74EBD1B94E5F400D8D046 /* Info.plist */; }; + C8A74F371B94E5F400D8D046 /* Observable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EBE1B94E5F400D8D046 /* Observable+Extensions.swift */; }; + C8A74F381B94E5F400D8D046 /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EBF1B94E5F400D8D046 /* Observable.swift */; }; + C8A74F391B94E5F400D8D046 /* Amb.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EC21B94E5F400D8D046 /* Amb.swift */; }; + C8A74F3A1B94E5F400D8D046 /* AnonymousObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EC31B94E5F400D8D046 /* AnonymousObservable.swift */; }; + C8A74F3B1B94E5F400D8D046 /* AsObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EC41B94E5F400D8D046 /* AsObservable.swift */; }; + C8A74F3C1B94E5F400D8D046 /* Catch.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EC51B94E5F400D8D046 /* Catch.swift */; }; + C8A74F3D1B94E5F400D8D046 /* CombineLatest+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EC61B94E5F400D8D046 /* CombineLatest+arity.swift */; }; + C8A74F3E1B94E5F400D8D046 /* CombineLatest+arity.tt in Resources */ = {isa = PBXBuildFile; fileRef = C8A74EC71B94E5F400D8D046 /* CombineLatest+arity.tt */; }; + C8A74F3F1B94E5F400D8D046 /* CombineLatest+CollectionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EC81B94E5F400D8D046 /* CombineLatest+CollectionType.swift */; }; + C8A74F401B94E5F400D8D046 /* CombineLatest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EC91B94E5F400D8D046 /* CombineLatest.swift */; }; + C8A74F411B94E5F400D8D046 /* Concat.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ECA1B94E5F400D8D046 /* Concat.swift */; }; + C8A74F421B94E5F400D8D046 /* ConnectableObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ECB1B94E5F400D8D046 /* ConnectableObservable.swift */; }; + C8A74F431B94E5F400D8D046 /* Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ECC1B94E5F400D8D046 /* Debug.swift */; }; + C8A74F441B94E5F400D8D046 /* Deferred.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ECD1B94E5F400D8D046 /* Deferred.swift */; }; + C8A74F451B94E5F400D8D046 /* DelaySubscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ECE1B94E5F400D8D046 /* DelaySubscription.swift */; }; + C8A74F461B94E5F400D8D046 /* DistinctUntilChanged.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ECF1B94E5F400D8D046 /* DistinctUntilChanged.swift */; }; + C8A74F471B94E5F400D8D046 /* Do.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ED01B94E5F400D8D046 /* Do.swift */; }; + C8A74F481B94E5F400D8D046 /* Empty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ED11B94E5F400D8D046 /* Empty.swift */; }; + C8A74F491B94E5F400D8D046 /* FailWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ED21B94E5F400D8D046 /* FailWith.swift */; }; + C8A74F4A1B94E5F400D8D046 /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ED31B94E5F400D8D046 /* Filter.swift */; }; + C8A74F4B1B94E5F400D8D046 /* FlatMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ED41B94E5F400D8D046 /* FlatMap.swift */; }; + C8A74F4C1B94E5F400D8D046 /* Just.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ED51B94E5F400D8D046 /* Just.swift */; }; + C8A74F4D1B94E5F400D8D046 /* Map.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ED61B94E5F400D8D046 /* Map.swift */; }; + C8A74F4E1B94E5F400D8D046 /* Merge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ED71B94E5F400D8D046 /* Merge.swift */; }; + C8A74F4F1B94E5F400D8D046 /* Multicast.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ED81B94E5F400D8D046 /* Multicast.swift */; }; + C8A74F501B94E5F400D8D046 /* Never.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74ED91B94E5F400D8D046 /* Never.swift */; }; + C8A74F511B94E5F400D8D046 /* ObserveOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EDA1B94E5F400D8D046 /* ObserveOn.swift */; }; + C8A74F521B94E5F400D8D046 /* ObserveOnSerialDispatchQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EDB1B94E5F400D8D046 /* ObserveOnSerialDispatchQueue.swift */; }; + C8A74F531B94E5F400D8D046 /* ObserveSingleOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EDC1B94E5F400D8D046 /* ObserveSingleOn.swift */; }; + C8A74F541B94E5F400D8D046 /* Producer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EDD1B94E5F400D8D046 /* Producer.swift */; }; + C8A74F551B94E5F400D8D046 /* Reduce.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EDE1B94E5F400D8D046 /* Reduce.swift */; }; + C8A74F561B94E5F400D8D046 /* RefCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EDF1B94E5F400D8D046 /* RefCount.swift */; }; + C8A74F571B94E5F400D8D046 /* Sample.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EE01B94E5F400D8D046 /* Sample.swift */; }; + C8A74F581B94E5F400D8D046 /* Scan.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EE11B94E5F400D8D046 /* Scan.swift */; }; + C8A74F591B94E5F400D8D046 /* Sink.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EE21B94E5F400D8D046 /* Sink.swift */; }; + C8A74F5A1B94E5F400D8D046 /* Skip.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EE31B94E5F400D8D046 /* Skip.swift */; }; + C8A74F5B1B94E5F400D8D046 /* StartWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EE41B94E5F400D8D046 /* StartWith.swift */; }; + C8A74F5C1B94E5F400D8D046 /* SubscribeOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EE51B94E5F400D8D046 /* SubscribeOn.swift */; }; + C8A74F5D1B94E5F400D8D046 /* Switch.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EE61B94E5F400D8D046 /* Switch.swift */; }; + C8A74F5E1B94E5F400D8D046 /* Take.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EE71B94E5F400D8D046 /* Take.swift */; }; + C8A74F5F1B94E5F400D8D046 /* TakeUntil.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EE81B94E5F400D8D046 /* TakeUntil.swift */; }; + C8A74F601B94E5F400D8D046 /* TakeWhile.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EE91B94E5F400D8D046 /* TakeWhile.swift */; }; + C8A74F611B94E5F400D8D046 /* Throttle.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EEA1B94E5F400D8D046 /* Throttle.swift */; }; + C8A74F621B94E5F400D8D046 /* Timer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EEB1B94E5F400D8D046 /* Timer.swift */; }; + C8A74F631B94E5F400D8D046 /* Zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EEC1B94E5F400D8D046 /* Zip+arity.swift */; }; + C8A74F641B94E5F400D8D046 /* Zip+arity.tt in Resources */ = {isa = PBXBuildFile; fileRef = C8A74EED1B94E5F400D8D046 /* Zip+arity.tt */; }; + C8A74F651B94E5F400D8D046 /* Zip+CollectionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EEE1B94E5F400D8D046 /* Zip+CollectionType.swift */; }; + C8A74F661B94E5F400D8D046 /* Zip.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EEF1B94E5F400D8D046 /* Zip.swift */; }; + C8A74F671B94E5F400D8D046 /* Observable+Aggregate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EF01B94E5F400D8D046 /* Observable+Aggregate.swift */; }; + C8A74F681B94E5F400D8D046 /* Observable+Binding.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EF11B94E5F400D8D046 /* Observable+Binding.swift */; }; + C8A74F691B94E5F400D8D046 /* Observable+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EF21B94E5F400D8D046 /* Observable+Concurrency.swift */; }; + C8A74F6A1B94E5F400D8D046 /* Observable+Creation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EF31B94E5F400D8D046 /* Observable+Creation.swift */; }; + C8A74F6B1B94E5F400D8D046 /* Observable+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EF41B94E5F400D8D046 /* Observable+Debug.swift */; }; + C8A74F6C1B94E5F400D8D046 /* Observable+Multiple.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EF51B94E5F400D8D046 /* Observable+Multiple.swift */; }; + C8A74F6D1B94E5F400D8D046 /* Observable+Single.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EF61B94E5F400D8D046 /* Observable+Single.swift */; }; + C8A74F6E1B94E5F400D8D046 /* Observable+StandardSequenceOperators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EF71B94E5F400D8D046 /* Observable+StandardSequenceOperators.swift */; }; + C8A74F6F1B94E5F400D8D046 /* Observable+Time.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EF81B94E5F400D8D046 /* Observable+Time.swift */; }; + C8A74F701B94E5F400D8D046 /* ObservableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EF91B94E5F400D8D046 /* ObservableType.swift */; }; + C8A74F711B94E5F400D8D046 /* Observer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EFA1B94E5F400D8D046 /* Observer.swift */; }; + C8A74F721B94E5F400D8D046 /* ObserverOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EFB1B94E5F400D8D046 /* ObserverOf.swift */; }; + C8A74F731B94E5F400D8D046 /* AnonymousObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EFD1B94E5F400D8D046 /* AnonymousObserver.swift */; }; + C8A74F741B94E5F400D8D046 /* AutoDetachObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EFE1B94E5F400D8D046 /* AutoDetachObserver.swift */; }; + C8A74F751B94E5F400D8D046 /* DoneObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74EFF1B94E5F400D8D046 /* DoneObserver.swift */; }; + C8A74F761B94E5F400D8D046 /* NopObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F001B94E5F400D8D046 /* NopObserver.swift */; }; + C8A74F771B94E5F400D8D046 /* ObserverBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F011B94E5F400D8D046 /* ObserverBase.swift */; }; + C8A74F781B94E5F400D8D046 /* SafeObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F021B94E5F400D8D046 /* SafeObserver.swift */; }; + C8A74F791B94E5F400D8D046 /* ScheduledObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F031B94E5F400D8D046 /* ScheduledObserver.swift */; }; + C8A74F7A1B94E5F400D8D046 /* TailRecursiveSink.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F041B94E5F400D8D046 /* TailRecursiveSink.swift */; }; + C8A74F7B1B94E5F400D8D046 /* ObserverType+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F051B94E5F400D8D046 /* ObserverType+Extensions.swift */; }; + C8A74F7C1B94E5F400D8D046 /* ObserverType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F061B94E5F400D8D046 /* ObserverType.swift */; }; + C8A74F7D1B94E5F400D8D046 /* Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F071B94E5F400D8D046 /* Rx.swift */; }; + C8A74F7E1B94E5F400D8D046 /* RxBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F081B94E5F400D8D046 /* RxBox.swift */; }; + C8A74F7F1B94E5F400D8D046 /* RxResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F091B94E5F400D8D046 /* RxResult.swift */; }; + C8A74F801B94E5F400D8D046 /* Scheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F0A1B94E5F400D8D046 /* Scheduler.swift */; }; + C8A74F811B94E5F400D8D046 /* ConcurrentDispatchQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F0C1B94E5F400D8D046 /* ConcurrentDispatchQueueScheduler.swift */; }; + C8A74F821B94E5F400D8D046 /* CurrentThreadScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F0D1B94E5F400D8D046 /* CurrentThreadScheduler.swift */; }; + C8A74F831B94E5F400D8D046 /* DispatchQueueSchedulerPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F0E1B94E5F400D8D046 /* DispatchQueueSchedulerPriority.swift */; }; + C8A74F841B94E5F400D8D046 /* MainScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F0F1B94E5F400D8D046 /* MainScheduler.swift */; }; + C8A74F851B94E5F400D8D046 /* OperationQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F101B94E5F400D8D046 /* OperationQueueScheduler.swift */; }; + C8A74F861B94E5F400D8D046 /* RecursiveScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F111B94E5F400D8D046 /* RecursiveScheduler.swift */; }; + C8A74F871B94E5F400D8D046 /* Scheduler+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F121B94E5F400D8D046 /* Scheduler+Extensions.swift */; }; + C8A74F881B94E5F400D8D046 /* SchedulerServices+Emulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F131B94E5F400D8D046 /* SchedulerServices+Emulation.swift */; }; + C8A74F891B94E5F400D8D046 /* SerialDispatchQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F141B94E5F400D8D046 /* SerialDispatchQueueScheduler.swift */; }; + C8A74F8A1B94E5F400D8D046 /* BehaviorSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F161B94E5F400D8D046 /* BehaviorSubject.swift */; }; + C8A74F8B1B94E5F400D8D046 /* PublishSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F171B94E5F400D8D046 /* PublishSubject.swift */; }; + C8A74F8C1B94E5F400D8D046 /* ReplaySubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F181B94E5F400D8D046 /* ReplaySubject.swift */; }; + C8A74F8D1B94E5F400D8D046 /* SubjectType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F191B94E5F400D8D046 /* SubjectType.swift */; }; + C8A74F8E1B94E5F400D8D046 /* Variable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F1A1B94E5F400D8D046 /* Variable.swift */; }; + C8A74FDF1B94E5FE00D8D046 /* _RX.m in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F921B94E5FE00D8D046 /* _RX.m */; }; + C8A74FE01B94E5FE00D8D046 /* _RXDelegateProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F941B94E5FE00D8D046 /* _RXDelegateProxy.m */; }; + C8A74FE11B94E5FE00D8D046 /* _RXKVOObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F961B94E5FE00D8D046 /* _RXKVOObserver.m */; }; + C8A74FE21B94E5FE00D8D046 /* _RXSwizzling.m in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F981B94E5FE00D8D046 /* _RXSwizzling.m */; }; + C8A74FE31B94E5FE00D8D046 /* CLLocationManager+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F991B94E5FE00D8D046 /* CLLocationManager+Rx.swift */; }; + C8A74FE41B94E5FE00D8D046 /* ControlEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F9B1B94E5FE00D8D046 /* ControlEvent.swift */; }; + C8A74FE51B94E5FE00D8D046 /* ControlProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F9C1B94E5FE00D8D046 /* ControlProperty.swift */; }; + C8A74FE61B94E5FE00D8D046 /* DelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F9D1B94E5FE00D8D046 /* DelegateProxy.swift */; }; + C8A74FE71B94E5FE00D8D046 /* DelegateProxyType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F9E1B94E5FE00D8D046 /* DelegateProxyType.swift */; }; + C8A74FE81B94E5FE00D8D046 /* Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74F9F1B94E5FE00D8D046 /* Logging.swift */; }; + C8A74FE91B94E5FE00D8D046 /* Observable+CocoaExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FA01B94E5FE00D8D046 /* Observable+CocoaExtensions.swift */; }; + C8A74FEA1B94E5FE00D8D046 /* ControlTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FA31B94E5FE00D8D046 /* ControlTarget.swift */; }; + C8A74FEB1B94E5FE00D8D046 /* Deallocating.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FA41B94E5FE00D8D046 /* Deallocating.swift */; }; + C8A74FEC1B94E5FE00D8D046 /* DeinitAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FA51B94E5FE00D8D046 /* DeinitAction.swift */; }; + C8A74FED1B94E5FE00D8D046 /* KVOObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FA61B94E5FE00D8D046 /* KVOObservable.swift */; }; + C8A74FEE1B94E5FE00D8D046 /* KVOObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FA71B94E5FE00D8D046 /* KVOObserver.swift */; }; + C8A74FEF1B94E5FE00D8D046 /* NSNotificationCenter+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FA81B94E5FE00D8D046 /* NSNotificationCenter+Rx.swift */; }; + C8A74FF01B94E5FE00D8D046 /* NSObject+Rx+CoreGraphics.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FA91B94E5FE00D8D046 /* NSObject+Rx+CoreGraphics.swift */; }; + C8A74FF11B94E5FE00D8D046 /* NSObject+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FAA1B94E5FE00D8D046 /* NSObject+Rx.swift */; }; + C8A74FF21B94E5FE00D8D046 /* NSURLSession+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FAB1B94E5FE00D8D046 /* NSURLSession+Rx.swift */; }; + C8A74FF31B94E5FE00D8D046 /* RxCLLocationManagerDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FAD1B94E5FE00D8D046 /* RxCLLocationManagerDelegateProxy.swift */; }; + C8A74FF41B94E5FE00D8D046 /* RxCocoa.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FAE1B94E5FE00D8D046 /* RxCocoa.swift */; }; + C8A74FF51B94E5FE00D8D046 /* RxTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FAF1B94E5FE00D8D046 /* RxTarget.swift */; }; + C8A74FF61B94E5FE00D8D046 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C8A74FB01B94E5FE00D8D046 /* Info.plist */; }; + C8A74FF71B94E5FE00D8D046 /* CoreDataEntityEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FB21B94E5FE00D8D046 /* CoreDataEntityEvent.swift */; }; + C8A74FF81B94E5FE00D8D046 /* RxCollectionViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FB41B94E5FE00D8D046 /* RxCollectionViewReactiveArrayDataSource.swift */; }; + C8A74FF91B94E5FE00D8D046 /* RxTableViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FB51B94E5FE00D8D046 /* RxTableViewReactiveArrayDataSource.swift */; }; + C8A74FFA1B94E5FE00D8D046 /* ItemEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FB71B94E5FE00D8D046 /* ItemEvents.swift */; }; + C8A74FFB1B94E5FE00D8D046 /* NSManagedObjectContext+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FB81B94E5FE00D8D046 /* NSManagedObjectContext+Rx.swift */; }; + C8A74FFC1B94E5FE00D8D046 /* RxCollectionViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FBA1B94E5FE00D8D046 /* RxCollectionViewDataSourceType.swift */; }; + C8A74FFD1B94E5FE00D8D046 /* RxTableViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FBB1B94E5FE00D8D046 /* RxTableViewDataSourceType.swift */; }; + C8A74FFE1B94E5FE00D8D046 /* RxActionSheetDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FBD1B94E5FE00D8D046 /* RxActionSheetDelegateProxy.swift */; }; + C8A74FFF1B94E5FE00D8D046 /* RxAlertViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FBE1B94E5FE00D8D046 /* RxAlertViewDelegateProxy.swift */; }; + C8A750001B94E5FE00D8D046 /* RxCollectionViewDataSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FBF1B94E5FE00D8D046 /* RxCollectionViewDataSourceProxy.swift */; }; + C8A750011B94E5FE00D8D046 /* RxCollectionViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FC01B94E5FE00D8D046 /* RxCollectionViewDelegateProxy.swift */; }; + C8A750021B94E5FE00D8D046 /* RxScrollViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FC11B94E5FE00D8D046 /* RxScrollViewDelegateProxy.swift */; }; + C8A750031B94E5FE00D8D046 /* RxSearchBarDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FC21B94E5FE00D8D046 /* RxSearchBarDelegateProxy.swift */; }; + C8A750041B94E5FE00D8D046 /* RxTableViewDataSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FC31B94E5FE00D8D046 /* RxTableViewDataSourceProxy.swift */; }; + C8A750051B94E5FE00D8D046 /* RxTableViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FC41B94E5FE00D8D046 /* RxTableViewDelegateProxy.swift */; }; + C8A750061B94E5FE00D8D046 /* RxTextViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FC51B94E5FE00D8D046 /* RxTextViewDelegateProxy.swift */; }; + C8A750071B94E5FE00D8D046 /* UIActionSheet+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FC61B94E5FE00D8D046 /* UIActionSheet+Rx.swift */; }; + C8A750081B94E5FE00D8D046 /* UIAlertView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FC71B94E5FE00D8D046 /* UIAlertView+Rx.swift */; }; + C8A750091B94E5FE00D8D046 /* UIBarButtonItem+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FC81B94E5FE00D8D046 /* UIBarButtonItem+Rx.swift */; }; + C8A7500A1B94E5FE00D8D046 /* UIButton+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FC91B94E5FE00D8D046 /* UIButton+Rx.swift */; }; + C8A7500B1B94E5FE00D8D046 /* UICollectionView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FCA1B94E5FE00D8D046 /* UICollectionView+Rx.swift */; }; + C8A7500C1B94E5FE00D8D046 /* UIControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FCB1B94E5FE00D8D046 /* UIControl+Rx.swift */; }; + C8A7500D1B94E5FE00D8D046 /* UIDatePicker+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FCC1B94E5FE00D8D046 /* UIDatePicker+Rx.swift */; }; + C8A7500E1B94E5FE00D8D046 /* UIGestureRecognizer+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FCD1B94E5FE00D8D046 /* UIGestureRecognizer+Rx.swift */; }; + C8A7500F1B94E5FE00D8D046 /* UIImageView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FCE1B94E5FE00D8D046 /* UIImageView+Rx.swift */; }; + C8A750101B94E5FE00D8D046 /* UILabel+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FCF1B94E5FE00D8D046 /* UILabel+Rx.swift */; }; + C8A750111B94E5FE00D8D046 /* UIScrollView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FD01B94E5FE00D8D046 /* UIScrollView+Rx.swift */; }; + C8A750121B94E5FE00D8D046 /* UISearchBar+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FD11B94E5FE00D8D046 /* UISearchBar+Rx.swift */; }; + C8A750131B94E5FE00D8D046 /* UISegmentedControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FD21B94E5FE00D8D046 /* UISegmentedControl+Rx.swift */; }; + C8A750141B94E5FE00D8D046 /* UISlider+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FD31B94E5FE00D8D046 /* UISlider+Rx.swift */; }; + C8A750151B94E5FE00D8D046 /* UISwitch+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FD41B94E5FE00D8D046 /* UISwitch+Rx.swift */; }; + C8A750161B94E5FE00D8D046 /* UITableView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FD51B94E5FE00D8D046 /* UITableView+Rx.swift */; }; + C8A750171B94E5FE00D8D046 /* UITextField+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FD61B94E5FE00D8D046 /* UITextField+Rx.swift */; }; + C8A750181B94E5FE00D8D046 /* UITextView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A74FD71B94E5FE00D8D046 /* UITextView+Rx.swift */; }; + C8A7501F1B94E77C00D8D046 /* RxDataSourceStarterKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A7501E1B94E77C00D8D046 /* RxDataSourceStarterKit.swift */; }; + C8A750201B94E78200D8D046 /* RxDataSourceStarterKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A7501E1B94E77C00D8D046 /* RxDataSourceStarterKit.swift */; }; C8C46DA81B47F7110020D71E /* CollectionViewImageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C46DA31B47F7110020D71E /* CollectionViewImageCell.swift */; }; C8C46DA91B47F7110020D71E /* WikipediaImageCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = C8C46DA41B47F7110020D71E /* WikipediaImageCell.xib */; }; C8C46DAA1B47F7110020D71E /* WikipediaSearchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C46DA51B47F7110020D71E /* WikipediaSearchCell.swift */; }; @@ -346,66 +351,6 @@ C83367111AD029AE00C668A7 /* HtmlParsing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HtmlParsing.swift; sourceTree = ""; }; C83367121AD029AE00C668A7 /* ImageService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageService.swift; sourceTree = ""; }; C83367211AD029AE00C668A7 /* Wireframe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Wireframe.swift; sourceTree = ""; }; - C836EC801B8A7AA600AB941D /* _RX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _RX.h; sourceTree = ""; }; - C836EC811B8A7AA600AB941D /* _RX.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _RX.m; sourceTree = ""; }; - C836EC821B8A7AA600AB941D /* _RXDelegateProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _RXDelegateProxy.h; sourceTree = ""; }; - C836EC831B8A7AA600AB941D /* _RXDelegateProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _RXDelegateProxy.m; sourceTree = ""; }; - C836EC841B8A7AA600AB941D /* _RXKVOObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _RXKVOObserver.h; sourceTree = ""; }; - C836EC851B8A7AA600AB941D /* _RXKVOObserver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _RXKVOObserver.m; sourceTree = ""; }; - C836EC861B8A7AA600AB941D /* _RXSwizzling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _RXSwizzling.h; sourceTree = ""; }; - C836EC871B8A7AA600AB941D /* _RXSwizzling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _RXSwizzling.m; sourceTree = ""; }; - C836EC881B8A7AA600AB941D /* CLLocationManager+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CLLocationManager+Rx.swift"; sourceTree = ""; }; - C836EC891B8A7AA600AB941D /* DelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DelegateProxy.swift; sourceTree = ""; }; - C836EC8A1B8A7AA600AB941D /* DelegateProxyType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DelegateProxyType.swift; sourceTree = ""; }; - C836EC8B1B8A7AA600AB941D /* Logging.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Logging.swift; sourceTree = ""; }; - C836EC8E1B8A7AA600AB941D /* ControlTarget.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlTarget.swift; sourceTree = ""; }; - C836EC8F1B8A7AA600AB941D /* Deallocating.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Deallocating.swift; sourceTree = ""; }; - C836EC901B8A7AA600AB941D /* DeinitAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeinitAction.swift; sourceTree = ""; }; - C836EC911B8A7AA600AB941D /* KVOObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KVOObservable.swift; sourceTree = ""; }; - C836EC921B8A7AA600AB941D /* KVOObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KVOObserver.swift; sourceTree = ""; }; - C836EC931B8A7AA600AB941D /* NSNotificationCenter+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSNotificationCenter+Rx.swift"; sourceTree = ""; }; - C836EC941B8A7AA600AB941D /* NSObject+Rx+CoreGraphics.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSObject+Rx+CoreGraphics.swift"; sourceTree = ""; }; - C836EC951B8A7AA600AB941D /* NSObject+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSObject+Rx.swift"; sourceTree = ""; }; - C836EC961B8A7AA600AB941D /* NSURLSession+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSURLSession+Rx.swift"; sourceTree = ""; }; - C836EC981B8A7AA600AB941D /* RxCLLocationManagerDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCLLocationManagerDelegateProxy.swift; sourceTree = ""; }; - C836EC991B8A7AA600AB941D /* RxCocoa.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCocoa.swift; sourceTree = ""; }; - C836EC9A1B8A7AA600AB941D /* RxTarget.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTarget.swift; sourceTree = ""; }; - C836EC9B1B8A7AA600AB941D /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C836EC9D1B8A7AA600AB941D /* CoreDataEntityEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataEntityEvent.swift; sourceTree = ""; }; - C836EC9F1B8A7AA600AB941D /* RxCollectionViewReactiveArrayDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewReactiveArrayDataSource.swift; sourceTree = ""; }; - C836ECA01B8A7AA600AB941D /* RxTableViewReactiveArrayDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewReactiveArrayDataSource.swift; sourceTree = ""; }; - C836ECA21B8A7AA600AB941D /* ItemEvents.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemEvents.swift; sourceTree = ""; }; - C836ECA31B8A7AA600AB941D /* NSManagedObjectContext+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectContext+Rx.swift"; sourceTree = ""; }; - C836ECA51B8A7AA600AB941D /* RxCollectionViewDataSourceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewDataSourceType.swift; sourceTree = ""; }; - C836ECA61B8A7AA600AB941D /* RxTableViewDataSourceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewDataSourceType.swift; sourceTree = ""; }; - C836ECA81B8A7AA600AB941D /* RxActionSheetDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxActionSheetDelegateProxy.swift; sourceTree = ""; }; - C836ECA91B8A7AA600AB941D /* RxAlertViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxAlertViewDelegateProxy.swift; sourceTree = ""; }; - C836ECAA1B8A7AA600AB941D /* RxCollectionViewDataSourceProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewDataSourceProxy.swift; sourceTree = ""; }; - C836ECAB1B8A7AA600AB941D /* RxCollectionViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewDelegateProxy.swift; sourceTree = ""; }; - C836ECAC1B8A7AA600AB941D /* RxScrollViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxScrollViewDelegateProxy.swift; sourceTree = ""; }; - C836ECAD1B8A7AA600AB941D /* RxSearchBarDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxSearchBarDelegateProxy.swift; sourceTree = ""; }; - C836ECAE1B8A7AA600AB941D /* RxTableViewDataSourceProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewDataSourceProxy.swift; sourceTree = ""; }; - C836ECAF1B8A7AA600AB941D /* RxTableViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewDelegateProxy.swift; sourceTree = ""; }; - C836ECB01B8A7AA600AB941D /* RxTextViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTextViewDelegateProxy.swift; sourceTree = ""; }; - C836ECB11B8A7AA600AB941D /* UIActionSheet+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIActionSheet+Rx.swift"; sourceTree = ""; }; - C836ECB21B8A7AA600AB941D /* UIAlertView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIAlertView+Rx.swift"; sourceTree = ""; }; - C836ECB31B8A7AA600AB941D /* UIBarButtonItem+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIBarButtonItem+Rx.swift"; sourceTree = ""; }; - C836ECB41B8A7AA600AB941D /* UIButton+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIButton+Rx.swift"; sourceTree = ""; }; - C836ECB51B8A7AA600AB941D /* UICollectionView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UICollectionView+Rx.swift"; sourceTree = ""; }; - C836ECB61B8A7AA600AB941D /* UIControl+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIControl+Rx.swift"; sourceTree = ""; }; - C836ECB71B8A7AA600AB941D /* UIDatePicker+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIDatePicker+Rx.swift"; sourceTree = ""; }; - C836ECB81B8A7AA600AB941D /* UIGestureRecognizer+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIGestureRecognizer+Rx.swift"; sourceTree = ""; }; - C836ECB91B8A7AA600AB941D /* UIImageView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImageView+Rx.swift"; sourceTree = ""; }; - C836ECBA1B8A7AA600AB941D /* UILabel+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UILabel+Rx.swift"; sourceTree = ""; }; - C836ECBB1B8A7AA600AB941D /* UIScrollView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIScrollView+Rx.swift"; sourceTree = ""; }; - C836ECBC1B8A7AA600AB941D /* UISearchBar+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UISearchBar+Rx.swift"; sourceTree = ""; }; - C836ECBD1B8A7AA600AB941D /* UISegmentedControl+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UISegmentedControl+Rx.swift"; sourceTree = ""; }; - C836ECBE1B8A7AA600AB941D /* UISlider+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UISlider+Rx.swift"; sourceTree = ""; }; - C836ECBF1B8A7AA600AB941D /* UISwitch+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UISwitch+Rx.swift"; sourceTree = ""; }; - C836ECC01B8A7AA600AB941D /* UITableView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UITableView+Rx.swift"; sourceTree = ""; }; - C836ECC11B8A7AA600AB941D /* UITextField+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UITextField+Rx.swift"; sourceTree = ""; }; - C836ECC21B8A7AA600AB941D /* UITextView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UITextView+Rx.swift"; sourceTree = ""; }; - C836ECC91B8A7AA600AB941D /* RxCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RxCocoa.h; sourceTree = ""; }; C859B9A31B45C5D900D012D7 /* PartialUpdatesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PartialUpdatesViewController.swift; sourceTree = ""; }; C859B9A51B45C80700D012D7 /* RxCollectionViewSectionedReloadDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewSectionedReloadDataSource.swift; sourceTree = ""; }; C859B9A71B45C83700D012D7 /* RxCollectionViewSectionedDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewSectionedDataSource.swift; sourceTree = ""; }; @@ -435,123 +380,187 @@ C8A468ED1B8A8BCC00BF917B /* RxCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RxCocoa.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C8A468EF1B8A8BD000BF917B /* RxBlocking.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RxBlocking.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C8A57F731B40AF7C00D5570A /* Random.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Random.xcdatamodel; sourceTree = ""; }; + C8A74E9F1B94E5F400D8D046 /* AnyObject+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AnyObject+Rx.swift"; sourceTree = ""; }; + C8A74EA01B94E5F400D8D046 /* Cancelable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Cancelable.swift; sourceTree = ""; }; + C8A74EA21B94E5F400D8D046 /* AsyncLock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsyncLock.swift; sourceTree = ""; }; + C8A74EA31B94E5F400D8D046 /* Lock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Lock.swift; sourceTree = ""; }; + C8A74EA41B94E5F400D8D046 /* ConnectableObservableType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectableObservableType.swift; sourceTree = ""; }; + C8A74EA61B94E5F400D8D046 /* Bag.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Bag.swift; sourceTree = ""; }; + C8A74EA71B94E5F400D8D046 /* InfiniteSequence.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InfiniteSequence.swift; sourceTree = ""; }; + C8A74EA81B94E5F400D8D046 /* Queue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Queue.swift; sourceTree = ""; }; + C8A74EA91B94E5F400D8D046 /* Disposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Disposable.swift; sourceTree = ""; }; + C8A74EAB1B94E5F400D8D046 /* AnonymousDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousDisposable.swift; sourceTree = ""; }; + C8A74EAC1B94E5F400D8D046 /* BinaryDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BinaryDisposable.swift; sourceTree = ""; }; + C8A74EAD1B94E5F400D8D046 /* BooleanDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BooleanDisposable.swift; sourceTree = ""; }; + C8A74EAE1B94E5F400D8D046 /* CompositeDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompositeDisposable.swift; sourceTree = ""; }; + C8A74EAF1B94E5F400D8D046 /* DisposeBag.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposeBag.swift; sourceTree = ""; }; + C8A74EB01B94E5F400D8D046 /* DisposeBase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposeBase.swift; sourceTree = ""; }; + C8A74EB11B94E5F400D8D046 /* NAryDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NAryDisposable.swift; sourceTree = ""; }; + C8A74EB21B94E5F400D8D046 /* NAryDisposable.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NAryDisposable.tt; sourceTree = ""; }; + C8A74EB31B94E5F400D8D046 /* NopDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NopDisposable.swift; sourceTree = ""; }; + C8A74EB41B94E5F400D8D046 /* ScheduledDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduledDisposable.swift; sourceTree = ""; }; + C8A74EB51B94E5F400D8D046 /* ScopedDispose.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScopedDispose.swift; sourceTree = ""; }; + C8A74EB61B94E5F400D8D046 /* SerialDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SerialDisposable.swift; sourceTree = ""; }; + C8A74EB71B94E5F400D8D046 /* SingleAssignmentDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SingleAssignmentDisposable.swift; sourceTree = ""; }; + C8A74EB81B94E5F400D8D046 /* StableCompositeDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StableCompositeDisposable.swift; sourceTree = ""; }; + C8A74EB91B94E5F400D8D046 /* TernaryDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TernaryDisposable.swift; sourceTree = ""; }; + C8A74EBA1B94E5F400D8D046 /* Error.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Error.swift; sourceTree = ""; }; + C8A74EBB1B94E5F400D8D046 /* Event.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Event.swift; sourceTree = ""; }; + C8A74EBC1B94E5F400D8D046 /* ImmediateScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImmediateScheduler.swift; sourceTree = ""; }; + C8A74EBD1B94E5F400D8D046 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + C8A74EBE1B94E5F400D8D046 /* Observable+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Extensions.swift"; sourceTree = ""; }; + C8A74EBF1B94E5F400D8D046 /* Observable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Observable.swift; sourceTree = ""; }; + C8A74EC21B94E5F400D8D046 /* Amb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Amb.swift; sourceTree = ""; }; + C8A74EC31B94E5F400D8D046 /* AnonymousObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousObservable.swift; sourceTree = ""; }; + C8A74EC41B94E5F400D8D046 /* AsObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsObservable.swift; sourceTree = ""; }; + C8A74EC51B94E5F400D8D046 /* Catch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Catch.swift; sourceTree = ""; }; + C8A74EC61B94E5F400D8D046 /* CombineLatest+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CombineLatest+arity.swift"; sourceTree = ""; }; + C8A74EC71B94E5F400D8D046 /* CombineLatest+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "CombineLatest+arity.tt"; sourceTree = ""; }; + C8A74EC81B94E5F400D8D046 /* CombineLatest+CollectionType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CombineLatest+CollectionType.swift"; sourceTree = ""; }; + C8A74EC91B94E5F400D8D046 /* CombineLatest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CombineLatest.swift; sourceTree = ""; }; + C8A74ECA1B94E5F400D8D046 /* Concat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Concat.swift; sourceTree = ""; }; + C8A74ECB1B94E5F400D8D046 /* ConnectableObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectableObservable.swift; sourceTree = ""; }; + C8A74ECC1B94E5F400D8D046 /* Debug.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Debug.swift; sourceTree = ""; }; + C8A74ECD1B94E5F400D8D046 /* Deferred.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Deferred.swift; sourceTree = ""; }; + C8A74ECE1B94E5F400D8D046 /* DelaySubscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DelaySubscription.swift; sourceTree = ""; }; + C8A74ECF1B94E5F400D8D046 /* DistinctUntilChanged.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DistinctUntilChanged.swift; sourceTree = ""; }; + C8A74ED01B94E5F400D8D046 /* Do.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Do.swift; sourceTree = ""; }; + C8A74ED11B94E5F400D8D046 /* Empty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Empty.swift; sourceTree = ""; }; + C8A74ED21B94E5F400D8D046 /* FailWith.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FailWith.swift; sourceTree = ""; }; + C8A74ED31B94E5F400D8D046 /* Filter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Filter.swift; sourceTree = ""; }; + C8A74ED41B94E5F400D8D046 /* FlatMap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FlatMap.swift; sourceTree = ""; }; + C8A74ED51B94E5F400D8D046 /* Just.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Just.swift; sourceTree = ""; }; + C8A74ED61B94E5F400D8D046 /* Map.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Map.swift; sourceTree = ""; }; + C8A74ED71B94E5F400D8D046 /* Merge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Merge.swift; sourceTree = ""; }; + C8A74ED81B94E5F400D8D046 /* Multicast.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Multicast.swift; sourceTree = ""; }; + C8A74ED91B94E5F400D8D046 /* Never.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Never.swift; sourceTree = ""; }; + C8A74EDA1B94E5F400D8D046 /* ObserveOn.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserveOn.swift; sourceTree = ""; }; + C8A74EDB1B94E5F400D8D046 /* ObserveOnSerialDispatchQueue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserveOnSerialDispatchQueue.swift; sourceTree = ""; }; + C8A74EDC1B94E5F400D8D046 /* ObserveSingleOn.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserveSingleOn.swift; sourceTree = ""; }; + C8A74EDD1B94E5F400D8D046 /* Producer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Producer.swift; sourceTree = ""; }; + C8A74EDE1B94E5F400D8D046 /* Reduce.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reduce.swift; sourceTree = ""; }; + C8A74EDF1B94E5F400D8D046 /* RefCount.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RefCount.swift; sourceTree = ""; }; + C8A74EE01B94E5F400D8D046 /* Sample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sample.swift; sourceTree = ""; }; + C8A74EE11B94E5F400D8D046 /* Scan.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Scan.swift; sourceTree = ""; }; + C8A74EE21B94E5F400D8D046 /* Sink.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sink.swift; sourceTree = ""; }; + C8A74EE31B94E5F400D8D046 /* Skip.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Skip.swift; sourceTree = ""; }; + C8A74EE41B94E5F400D8D046 /* StartWith.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StartWith.swift; sourceTree = ""; }; + C8A74EE51B94E5F400D8D046 /* SubscribeOn.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubscribeOn.swift; sourceTree = ""; }; + C8A74EE61B94E5F400D8D046 /* Switch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Switch.swift; sourceTree = ""; }; + C8A74EE71B94E5F400D8D046 /* Take.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Take.swift; sourceTree = ""; }; + C8A74EE81B94E5F400D8D046 /* TakeUntil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TakeUntil.swift; sourceTree = ""; }; + C8A74EE91B94E5F400D8D046 /* TakeWhile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TakeWhile.swift; sourceTree = ""; }; + C8A74EEA1B94E5F400D8D046 /* Throttle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Throttle.swift; sourceTree = ""; }; + C8A74EEB1B94E5F400D8D046 /* Timer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Timer.swift; sourceTree = ""; }; + C8A74EEC1B94E5F400D8D046 /* Zip+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Zip+arity.swift"; sourceTree = ""; }; + C8A74EED1B94E5F400D8D046 /* Zip+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "Zip+arity.tt"; sourceTree = ""; }; + C8A74EEE1B94E5F400D8D046 /* Zip+CollectionType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Zip+CollectionType.swift"; sourceTree = ""; }; + C8A74EEF1B94E5F400D8D046 /* Zip.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Zip.swift; sourceTree = ""; }; + C8A74EF01B94E5F400D8D046 /* Observable+Aggregate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Aggregate.swift"; sourceTree = ""; }; + C8A74EF11B94E5F400D8D046 /* Observable+Binding.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Binding.swift"; sourceTree = ""; }; + C8A74EF21B94E5F400D8D046 /* Observable+Concurrency.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Concurrency.swift"; sourceTree = ""; }; + C8A74EF31B94E5F400D8D046 /* Observable+Creation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Creation.swift"; sourceTree = ""; }; + C8A74EF41B94E5F400D8D046 /* Observable+Debug.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Debug.swift"; sourceTree = ""; }; + C8A74EF51B94E5F400D8D046 /* Observable+Multiple.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Multiple.swift"; sourceTree = ""; }; + C8A74EF61B94E5F400D8D046 /* Observable+Single.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Single.swift"; sourceTree = ""; }; + C8A74EF71B94E5F400D8D046 /* Observable+StandardSequenceOperators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+StandardSequenceOperators.swift"; sourceTree = ""; }; + C8A74EF81B94E5F400D8D046 /* Observable+Time.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Time.swift"; sourceTree = ""; }; + C8A74EF91B94E5F400D8D046 /* ObservableType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObservableType.swift; sourceTree = ""; }; + C8A74EFA1B94E5F400D8D046 /* Observer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Observer.swift; sourceTree = ""; }; + C8A74EFB1B94E5F400D8D046 /* ObserverOf.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserverOf.swift; sourceTree = ""; }; + C8A74EFD1B94E5F400D8D046 /* AnonymousObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousObserver.swift; sourceTree = ""; }; + C8A74EFE1B94E5F400D8D046 /* AutoDetachObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDetachObserver.swift; sourceTree = ""; }; + C8A74EFF1B94E5F400D8D046 /* DoneObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DoneObserver.swift; sourceTree = ""; }; + C8A74F001B94E5F400D8D046 /* NopObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NopObserver.swift; sourceTree = ""; }; + C8A74F011B94E5F400D8D046 /* ObserverBase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserverBase.swift; sourceTree = ""; }; + C8A74F021B94E5F400D8D046 /* SafeObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafeObserver.swift; sourceTree = ""; }; + C8A74F031B94E5F400D8D046 /* ScheduledObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduledObserver.swift; sourceTree = ""; }; + C8A74F041B94E5F400D8D046 /* TailRecursiveSink.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TailRecursiveSink.swift; sourceTree = ""; }; + C8A74F051B94E5F400D8D046 /* ObserverType+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ObserverType+Extensions.swift"; sourceTree = ""; }; + C8A74F061B94E5F400D8D046 /* ObserverType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserverType.swift; sourceTree = ""; }; + C8A74F071B94E5F400D8D046 /* Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Rx.swift; sourceTree = ""; }; + C8A74F081B94E5F400D8D046 /* RxBox.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxBox.swift; sourceTree = ""; }; + C8A74F091B94E5F400D8D046 /* RxResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxResult.swift; sourceTree = ""; }; + C8A74F0A1B94E5F400D8D046 /* Scheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Scheduler.swift; sourceTree = ""; }; + C8A74F0C1B94E5F400D8D046 /* ConcurrentDispatchQueueScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConcurrentDispatchQueueScheduler.swift; sourceTree = ""; }; + C8A74F0D1B94E5F400D8D046 /* CurrentThreadScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CurrentThreadScheduler.swift; sourceTree = ""; }; + C8A74F0E1B94E5F400D8D046 /* DispatchQueueSchedulerPriority.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DispatchQueueSchedulerPriority.swift; sourceTree = ""; }; + C8A74F0F1B94E5F400D8D046 /* MainScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainScheduler.swift; sourceTree = ""; }; + C8A74F101B94E5F400D8D046 /* OperationQueueScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OperationQueueScheduler.swift; sourceTree = ""; }; + C8A74F111B94E5F400D8D046 /* RecursiveScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecursiveScheduler.swift; sourceTree = ""; }; + C8A74F121B94E5F400D8D046 /* Scheduler+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Scheduler+Extensions.swift"; sourceTree = ""; }; + C8A74F131B94E5F400D8D046 /* SchedulerServices+Emulation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "SchedulerServices+Emulation.swift"; sourceTree = ""; }; + C8A74F141B94E5F400D8D046 /* SerialDispatchQueueScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SerialDispatchQueueScheduler.swift; sourceTree = ""; }; + C8A74F161B94E5F400D8D046 /* BehaviorSubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BehaviorSubject.swift; sourceTree = ""; }; + C8A74F171B94E5F400D8D046 /* PublishSubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PublishSubject.swift; sourceTree = ""; }; + C8A74F181B94E5F400D8D046 /* ReplaySubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReplaySubject.swift; sourceTree = ""; }; + C8A74F191B94E5F400D8D046 /* SubjectType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubjectType.swift; sourceTree = ""; }; + C8A74F1A1B94E5F400D8D046 /* Variable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Variable.swift; sourceTree = ""; }; + C8A74F911B94E5FE00D8D046 /* _RX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _RX.h; sourceTree = ""; }; + C8A74F921B94E5FE00D8D046 /* _RX.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _RX.m; sourceTree = ""; }; + C8A74F931B94E5FE00D8D046 /* _RXDelegateProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _RXDelegateProxy.h; sourceTree = ""; }; + C8A74F941B94E5FE00D8D046 /* _RXDelegateProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _RXDelegateProxy.m; sourceTree = ""; }; + C8A74F951B94E5FE00D8D046 /* _RXKVOObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _RXKVOObserver.h; sourceTree = ""; }; + C8A74F961B94E5FE00D8D046 /* _RXKVOObserver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _RXKVOObserver.m; sourceTree = ""; }; + C8A74F971B94E5FE00D8D046 /* _RXSwizzling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _RXSwizzling.h; sourceTree = ""; }; + C8A74F981B94E5FE00D8D046 /* _RXSwizzling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _RXSwizzling.m; sourceTree = ""; }; + C8A74F991B94E5FE00D8D046 /* CLLocationManager+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CLLocationManager+Rx.swift"; sourceTree = ""; }; + C8A74F9B1B94E5FE00D8D046 /* ControlEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlEvent.swift; sourceTree = ""; }; + C8A74F9C1B94E5FE00D8D046 /* ControlProperty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlProperty.swift; sourceTree = ""; }; + C8A74F9D1B94E5FE00D8D046 /* DelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DelegateProxy.swift; sourceTree = ""; }; + C8A74F9E1B94E5FE00D8D046 /* DelegateProxyType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DelegateProxyType.swift; sourceTree = ""; }; + C8A74F9F1B94E5FE00D8D046 /* Logging.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Logging.swift; sourceTree = ""; }; + C8A74FA01B94E5FE00D8D046 /* Observable+CocoaExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+CocoaExtensions.swift"; sourceTree = ""; }; + C8A74FA31B94E5FE00D8D046 /* ControlTarget.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlTarget.swift; sourceTree = ""; }; + C8A74FA41B94E5FE00D8D046 /* Deallocating.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Deallocating.swift; sourceTree = ""; }; + C8A74FA51B94E5FE00D8D046 /* DeinitAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeinitAction.swift; sourceTree = ""; }; + C8A74FA61B94E5FE00D8D046 /* KVOObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KVOObservable.swift; sourceTree = ""; }; + C8A74FA71B94E5FE00D8D046 /* KVOObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KVOObserver.swift; sourceTree = ""; }; + C8A74FA81B94E5FE00D8D046 /* NSNotificationCenter+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSNotificationCenter+Rx.swift"; sourceTree = ""; }; + C8A74FA91B94E5FE00D8D046 /* NSObject+Rx+CoreGraphics.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSObject+Rx+CoreGraphics.swift"; sourceTree = ""; }; + C8A74FAA1B94E5FE00D8D046 /* NSObject+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSObject+Rx.swift"; sourceTree = ""; }; + C8A74FAB1B94E5FE00D8D046 /* NSURLSession+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSURLSession+Rx.swift"; sourceTree = ""; }; + C8A74FAD1B94E5FE00D8D046 /* RxCLLocationManagerDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCLLocationManagerDelegateProxy.swift; sourceTree = ""; }; + C8A74FAE1B94E5FE00D8D046 /* RxCocoa.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCocoa.swift; sourceTree = ""; }; + C8A74FAF1B94E5FE00D8D046 /* RxTarget.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTarget.swift; sourceTree = ""; }; + C8A74FB01B94E5FE00D8D046 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + C8A74FB21B94E5FE00D8D046 /* CoreDataEntityEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataEntityEvent.swift; sourceTree = ""; }; + C8A74FB41B94E5FE00D8D046 /* RxCollectionViewReactiveArrayDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewReactiveArrayDataSource.swift; sourceTree = ""; }; + C8A74FB51B94E5FE00D8D046 /* RxTableViewReactiveArrayDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewReactiveArrayDataSource.swift; sourceTree = ""; }; + C8A74FB71B94E5FE00D8D046 /* ItemEvents.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemEvents.swift; sourceTree = ""; }; + C8A74FB81B94E5FE00D8D046 /* NSManagedObjectContext+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectContext+Rx.swift"; sourceTree = ""; }; + C8A74FBA1B94E5FE00D8D046 /* RxCollectionViewDataSourceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewDataSourceType.swift; sourceTree = ""; }; + C8A74FBB1B94E5FE00D8D046 /* RxTableViewDataSourceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewDataSourceType.swift; sourceTree = ""; }; + C8A74FBD1B94E5FE00D8D046 /* RxActionSheetDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxActionSheetDelegateProxy.swift; sourceTree = ""; }; + C8A74FBE1B94E5FE00D8D046 /* RxAlertViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxAlertViewDelegateProxy.swift; sourceTree = ""; }; + C8A74FBF1B94E5FE00D8D046 /* RxCollectionViewDataSourceProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewDataSourceProxy.swift; sourceTree = ""; }; + C8A74FC01B94E5FE00D8D046 /* RxCollectionViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewDelegateProxy.swift; sourceTree = ""; }; + C8A74FC11B94E5FE00D8D046 /* RxScrollViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxScrollViewDelegateProxy.swift; sourceTree = ""; }; + C8A74FC21B94E5FE00D8D046 /* RxSearchBarDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxSearchBarDelegateProxy.swift; sourceTree = ""; }; + C8A74FC31B94E5FE00D8D046 /* RxTableViewDataSourceProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewDataSourceProxy.swift; sourceTree = ""; }; + C8A74FC41B94E5FE00D8D046 /* RxTableViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewDelegateProxy.swift; sourceTree = ""; }; + C8A74FC51B94E5FE00D8D046 /* RxTextViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTextViewDelegateProxy.swift; sourceTree = ""; }; + C8A74FC61B94E5FE00D8D046 /* UIActionSheet+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIActionSheet+Rx.swift"; sourceTree = ""; }; + C8A74FC71B94E5FE00D8D046 /* UIAlertView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIAlertView+Rx.swift"; sourceTree = ""; }; + C8A74FC81B94E5FE00D8D046 /* UIBarButtonItem+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIBarButtonItem+Rx.swift"; sourceTree = ""; }; + C8A74FC91B94E5FE00D8D046 /* UIButton+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIButton+Rx.swift"; sourceTree = ""; }; + C8A74FCA1B94E5FE00D8D046 /* UICollectionView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UICollectionView+Rx.swift"; sourceTree = ""; }; + C8A74FCB1B94E5FE00D8D046 /* UIControl+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIControl+Rx.swift"; sourceTree = ""; }; + C8A74FCC1B94E5FE00D8D046 /* UIDatePicker+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIDatePicker+Rx.swift"; sourceTree = ""; }; + C8A74FCD1B94E5FE00D8D046 /* UIGestureRecognizer+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIGestureRecognizer+Rx.swift"; sourceTree = ""; }; + C8A74FCE1B94E5FE00D8D046 /* UIImageView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImageView+Rx.swift"; sourceTree = ""; }; + C8A74FCF1B94E5FE00D8D046 /* UILabel+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UILabel+Rx.swift"; sourceTree = ""; }; + C8A74FD01B94E5FE00D8D046 /* UIScrollView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIScrollView+Rx.swift"; sourceTree = ""; }; + C8A74FD11B94E5FE00D8D046 /* UISearchBar+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UISearchBar+Rx.swift"; sourceTree = ""; }; + C8A74FD21B94E5FE00D8D046 /* UISegmentedControl+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UISegmentedControl+Rx.swift"; sourceTree = ""; }; + C8A74FD31B94E5FE00D8D046 /* UISlider+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UISlider+Rx.swift"; sourceTree = ""; }; + C8A74FD41B94E5FE00D8D046 /* UISwitch+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UISwitch+Rx.swift"; sourceTree = ""; }; + C8A74FD51B94E5FE00D8D046 /* UITableView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UITableView+Rx.swift"; sourceTree = ""; }; + C8A74FD61B94E5FE00D8D046 /* UITextField+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UITextField+Rx.swift"; sourceTree = ""; }; + C8A74FD71B94E5FE00D8D046 /* UITextView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UITextView+Rx.swift"; sourceTree = ""; }; + C8A74FDE1B94E5FE00D8D046 /* RxCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RxCocoa.h; sourceTree = ""; }; + C8A7501E1B94E77C00D8D046 /* RxDataSourceStarterKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxDataSourceStarterKit.swift; sourceTree = ""; }; C8AF26F11B49ABD300131C03 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - C8C3DA151B944DE3004D233E /* AnyObject+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AnyObject+Rx.swift"; sourceTree = ""; }; - C8C3DA161B944DE3004D233E /* Cancelable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Cancelable.swift; sourceTree = ""; }; - C8C3DA181B944DE3004D233E /* AsyncLock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsyncLock.swift; sourceTree = ""; }; - C8C3DA191B944DE3004D233E /* Lock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Lock.swift; sourceTree = ""; }; - C8C3DA1A1B944DE3004D233E /* ConnectableObservableType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectableObservableType.swift; sourceTree = ""; }; - C8C3DA1C1B944DE3004D233E /* Bag.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Bag.swift; sourceTree = ""; }; - C8C3DA1D1B944DE3004D233E /* InfiniteSequence.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InfiniteSequence.swift; sourceTree = ""; }; - C8C3DA1E1B944DE3004D233E /* Queue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Queue.swift; sourceTree = ""; }; - C8C3DA1F1B944DE3004D233E /* Disposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Disposable.swift; sourceTree = ""; }; - C8C3DA211B944DE3004D233E /* AnonymousDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousDisposable.swift; sourceTree = ""; }; - C8C3DA221B944DE3004D233E /* BinaryDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BinaryDisposable.swift; sourceTree = ""; }; - C8C3DA231B944DE3004D233E /* BooleanDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BooleanDisposable.swift; sourceTree = ""; }; - C8C3DA241B944DE3004D233E /* CompositeDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompositeDisposable.swift; sourceTree = ""; }; - C8C3DA251B944DE3004D233E /* DisposeBag.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposeBag.swift; sourceTree = ""; }; - C8C3DA261B944DE3004D233E /* DisposeBase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposeBase.swift; sourceTree = ""; }; - C8C3DA271B944DE3004D233E /* NAryDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NAryDisposable.swift; sourceTree = ""; }; - C8C3DA281B944DE3004D233E /* NAryDisposable.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NAryDisposable.tt; sourceTree = ""; }; - C8C3DA291B944DE3004D233E /* NopDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NopDisposable.swift; sourceTree = ""; }; - C8C3DA2A1B944DE3004D233E /* ScheduledDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduledDisposable.swift; sourceTree = ""; }; - C8C3DA2B1B944DE3004D233E /* ScopedDispose.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScopedDispose.swift; sourceTree = ""; }; - C8C3DA2C1B944DE3004D233E /* SerialDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SerialDisposable.swift; sourceTree = ""; }; - C8C3DA2D1B944DE3004D233E /* SingleAssignmentDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SingleAssignmentDisposable.swift; sourceTree = ""; }; - C8C3DA2E1B944DE3004D233E /* StableCompositeDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StableCompositeDisposable.swift; sourceTree = ""; }; - C8C3DA2F1B944DE3004D233E /* TernaryDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TernaryDisposable.swift; sourceTree = ""; }; - C8C3DA301B944DE3004D233E /* Error.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Error.swift; sourceTree = ""; }; - C8C3DA311B944DE3004D233E /* Event.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Event.swift; sourceTree = ""; }; - C8C3DA321B944DE3004D233E /* ImmediateScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImmediateScheduler.swift; sourceTree = ""; }; - C8C3DA331B944DE3004D233E /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C8C3DA341B944DE3004D233E /* Observable+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Extensions.swift"; sourceTree = ""; }; - C8C3DA351B944DE3004D233E /* Observable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Observable.swift; sourceTree = ""; }; - C8C3DA381B944DE3004D233E /* Amb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Amb.swift; sourceTree = ""; }; - C8C3DA391B944DE3004D233E /* AnonymousObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousObservable.swift; sourceTree = ""; }; - C8C3DA3A1B944DE3004D233E /* AsObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsObservable.swift; sourceTree = ""; }; - C8C3DA3B1B944DE3004D233E /* Catch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Catch.swift; sourceTree = ""; }; - C8C3DA3C1B944DE3004D233E /* CombineLatest+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CombineLatest+arity.swift"; sourceTree = ""; }; - C8C3DA3D1B944DE3004D233E /* CombineLatest+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "CombineLatest+arity.tt"; sourceTree = ""; }; - C8C3DA3E1B944DE3004D233E /* CombineLatest+CollectionType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CombineLatest+CollectionType.swift"; sourceTree = ""; }; - C8C3DA3F1B944DE3004D233E /* CombineLatest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CombineLatest.swift; sourceTree = ""; }; - C8C3DA401B944DE3004D233E /* Concat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Concat.swift; sourceTree = ""; }; - C8C3DA411B944DE3004D233E /* ConnectableObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectableObservable.swift; sourceTree = ""; }; - C8C3DA421B944DE3004D233E /* Debug.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Debug.swift; sourceTree = ""; }; - C8C3DA431B944DE3004D233E /* Deferred.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Deferred.swift; sourceTree = ""; }; - C8C3DA441B944DE3004D233E /* DelaySubscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DelaySubscription.swift; sourceTree = ""; }; - C8C3DA451B944DE3004D233E /* DistinctUntilChanged.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DistinctUntilChanged.swift; sourceTree = ""; }; - C8C3DA461B944DE3004D233E /* Do.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Do.swift; sourceTree = ""; }; - C8C3DA471B944DE3004D233E /* Empty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Empty.swift; sourceTree = ""; }; - C8C3DA481B944DE3004D233E /* FailWith.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FailWith.swift; sourceTree = ""; }; - C8C3DA491B944DE3004D233E /* Filter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Filter.swift; sourceTree = ""; }; - C8C3DA4A1B944DE3004D233E /* FlatMap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FlatMap.swift; sourceTree = ""; }; - C8C3DA4B1B944DE3004D233E /* Just.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Just.swift; sourceTree = ""; }; - C8C3DA4C1B944DE3004D233E /* Map.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Map.swift; sourceTree = ""; }; - C8C3DA4D1B944DE3004D233E /* Merge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Merge.swift; sourceTree = ""; }; - C8C3DA4E1B944DE3004D233E /* Multicast.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Multicast.swift; sourceTree = ""; }; - C8C3DA4F1B944DE3004D233E /* Never.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Never.swift; sourceTree = ""; }; - C8C3DA501B944DE3004D233E /* ObserveOn.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserveOn.swift; sourceTree = ""; }; - C8C3DA511B944DE3004D233E /* ObserveOnSerialDispatchQueue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserveOnSerialDispatchQueue.swift; sourceTree = ""; }; - C8C3DA521B944DE3004D233E /* ObserveSingleOn.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserveSingleOn.swift; sourceTree = ""; }; - C8C3DA531B944DE3004D233E /* Producer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Producer.swift; sourceTree = ""; }; - C8C3DA541B944DE3004D233E /* Reduce.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reduce.swift; sourceTree = ""; }; - C8C3DA551B944DE3004D233E /* RefCount.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RefCount.swift; sourceTree = ""; }; - C8C3DA561B944DE3004D233E /* Sample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sample.swift; sourceTree = ""; }; - C8C3DA571B944DE3004D233E /* Scan.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Scan.swift; sourceTree = ""; }; - C8C3DA581B944DE3004D233E /* Sink.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sink.swift; sourceTree = ""; }; - C8C3DA591B944DE3004D233E /* Skip.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Skip.swift; sourceTree = ""; }; - C8C3DA5A1B944DE3004D233E /* StartWith.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StartWith.swift; sourceTree = ""; }; - C8C3DA5B1B944DE3004D233E /* SubscribeOn.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubscribeOn.swift; sourceTree = ""; }; - C8C3DA5C1B944DE3004D233E /* Switch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Switch.swift; sourceTree = ""; }; - C8C3DA5D1B944DE3004D233E /* Take.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Take.swift; sourceTree = ""; }; - C8C3DA5E1B944DE3004D233E /* TakeUntil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TakeUntil.swift; sourceTree = ""; }; - C8C3DA5F1B944DE3004D233E /* TakeWhile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TakeWhile.swift; sourceTree = ""; }; - C8C3DA601B944DE3004D233E /* Throttle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Throttle.swift; sourceTree = ""; }; - C8C3DA611B944DE3004D233E /* Timer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Timer.swift; sourceTree = ""; }; - C8C3DA621B944DE3004D233E /* Zip+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Zip+arity.swift"; sourceTree = ""; }; - C8C3DA631B944DE3004D233E /* Zip+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "Zip+arity.tt"; sourceTree = ""; }; - C8C3DA641B944DE3004D233E /* Zip+CollectionType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Zip+CollectionType.swift"; sourceTree = ""; }; - C8C3DA651B944DE3004D233E /* Zip.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Zip.swift; sourceTree = ""; }; - C8C3DA661B944DE3004D233E /* Observable+Aggregate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Aggregate.swift"; sourceTree = ""; }; - C8C3DA671B944DE3004D233E /* Observable+Binding.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Binding.swift"; sourceTree = ""; }; - C8C3DA681B944DE3004D233E /* Observable+Concurrency.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Concurrency.swift"; sourceTree = ""; }; - C8C3DA691B944DE3004D233E /* Observable+Creation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Creation.swift"; sourceTree = ""; }; - C8C3DA6A1B944DE3004D233E /* Observable+Debug.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Debug.swift"; sourceTree = ""; }; - C8C3DA6B1B944DE3004D233E /* Observable+Multiple.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Multiple.swift"; sourceTree = ""; }; - C8C3DA6C1B944DE3004D233E /* Observable+Single.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Single.swift"; sourceTree = ""; }; - C8C3DA6D1B944DE3004D233E /* Observable+StandardSequenceOperators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+StandardSequenceOperators.swift"; sourceTree = ""; }; - C8C3DA6E1B944DE3004D233E /* Observable+Time.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Time.swift"; sourceTree = ""; }; - C8C3DA6F1B944DE3004D233E /* ObservableType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObservableType.swift; sourceTree = ""; }; - C8C3DA701B944DE3004D233E /* Observer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Observer.swift; sourceTree = ""; }; - C8C3DA711B944DE3004D233E /* ObserverOf.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserverOf.swift; sourceTree = ""; }; - C8C3DA731B944DE3004D233E /* AnonymousObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousObserver.swift; sourceTree = ""; }; - C8C3DA741B944DE3004D233E /* AutoDetachObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDetachObserver.swift; sourceTree = ""; }; - C8C3DA751B944DE3004D233E /* DoneObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DoneObserver.swift; sourceTree = ""; }; - C8C3DA761B944DE3004D233E /* NopObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NopObserver.swift; sourceTree = ""; }; - C8C3DA771B944DE3004D233E /* ObserverBase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserverBase.swift; sourceTree = ""; }; - C8C3DA781B944DE3004D233E /* SafeObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafeObserver.swift; sourceTree = ""; }; - C8C3DA791B944DE3004D233E /* ScheduledObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduledObserver.swift; sourceTree = ""; }; - C8C3DA7A1B944DE3004D233E /* TailRecursiveSink.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TailRecursiveSink.swift; sourceTree = ""; }; - C8C3DA7B1B944DE3004D233E /* ObserverType+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ObserverType+Extensions.swift"; sourceTree = ""; }; - C8C3DA7C1B944DE3004D233E /* ObserverType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserverType.swift; sourceTree = ""; }; - C8C3DA7D1B944DE3004D233E /* Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Rx.swift; sourceTree = ""; }; - C8C3DA7E1B944DE3004D233E /* RxBox.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxBox.swift; sourceTree = ""; }; - C8C3DA7F1B944DE3004D233E /* RxResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxResult.swift; sourceTree = ""; }; - C8C3DA801B944DE3004D233E /* Scheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Scheduler.swift; sourceTree = ""; }; - C8C3DA821B944DE3004D233E /* ConcurrentDispatchQueueScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConcurrentDispatchQueueScheduler.swift; sourceTree = ""; }; - C8C3DA831B944DE3004D233E /* CurrentThreadScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CurrentThreadScheduler.swift; sourceTree = ""; }; - C8C3DA841B944DE3004D233E /* DispatchQueueSchedulerPriority.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DispatchQueueSchedulerPriority.swift; sourceTree = ""; }; - C8C3DA851B944DE3004D233E /* MainScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainScheduler.swift; sourceTree = ""; }; - C8C3DA861B944DE3004D233E /* OperationQueueScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OperationQueueScheduler.swift; sourceTree = ""; }; - C8C3DA871B944DE3004D233E /* RecursiveScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecursiveScheduler.swift; sourceTree = ""; }; - C8C3DA881B944DE3004D233E /* Scheduler+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Scheduler+Extensions.swift"; sourceTree = ""; }; - C8C3DA891B944DE3004D233E /* SchedulerServices+Emulation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "SchedulerServices+Emulation.swift"; sourceTree = ""; }; - C8C3DA8A1B944DE3004D233E /* SerialDispatchQueueScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SerialDispatchQueueScheduler.swift; sourceTree = ""; }; - C8C3DA8C1B944DE3004D233E /* BehaviorSubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BehaviorSubject.swift; sourceTree = ""; }; - C8C3DA8D1B944DE3004D233E /* PublishSubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PublishSubject.swift; sourceTree = ""; }; - C8C3DA8E1B944DE3004D233E /* ReplaySubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReplaySubject.swift; sourceTree = ""; }; - C8C3DA8F1B944DE3004D233E /* SubjectType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubjectType.swift; sourceTree = ""; }; - C8C3DA901B944DE3004D233E /* Variable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Variable.swift; sourceTree = ""; }; C8C46DA31B47F7110020D71E /* CollectionViewImageCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewImageCell.swift; sourceTree = ""; }; C8C46DA41B47F7110020D71E /* WikipediaImageCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WikipediaImageCell.xib; sourceTree = ""; }; C8C46DA51B47F7110020D71E /* WikipediaSearchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WikipediaSearchCell.swift; sourceTree = ""; }; @@ -719,152 +728,12 @@ C836EB911B8A7A3700AB941D /* NoModule */ = { isa = PBXGroup; children = ( - C8C3DA141B944DE3004D233E /* RxSwift */, - C836EC7E1B8A7AA600AB941D /* RxCocoa */, + C8A74E9E1B94E5F400D8D046 /* RxSwift */, + C8A74F8F1B94E5FE00D8D046 /* RxCocoa */, ); name = NoModule; sourceTree = ""; }; - C836EC7E1B8A7AA600AB941D /* RxCocoa */ = { - isa = PBXGroup; - children = ( - C836EC7F1B8A7AA600AB941D /* Common */, - C836EC9B1B8A7AA600AB941D /* Info.plist */, - C836EC9C1B8A7AA600AB941D /* iOS */, - C836ECC91B8A7AA600AB941D /* RxCocoa.h */, - ); - name = RxCocoa; - path = ../RxCocoa; - sourceTree = ""; - }; - C836EC7F1B8A7AA600AB941D /* Common */ = { - isa = PBXGroup; - children = ( - C836EC801B8A7AA600AB941D /* _RX.h */, - C836EC811B8A7AA600AB941D /* _RX.m */, - C836EC821B8A7AA600AB941D /* _RXDelegateProxy.h */, - C836EC831B8A7AA600AB941D /* _RXDelegateProxy.m */, - C836EC841B8A7AA600AB941D /* _RXKVOObserver.h */, - C836EC851B8A7AA600AB941D /* _RXKVOObserver.m */, - C836EC861B8A7AA600AB941D /* _RXSwizzling.h */, - C836EC871B8A7AA600AB941D /* _RXSwizzling.m */, - C836EC881B8A7AA600AB941D /* CLLocationManager+Rx.swift */, - C836EC891B8A7AA600AB941D /* DelegateProxy.swift */, - C836EC8A1B8A7AA600AB941D /* DelegateProxyType.swift */, - C836EC8B1B8A7AA600AB941D /* Logging.swift */, - C836EC8C1B8A7AA600AB941D /* Observables */, - C836EC971B8A7AA600AB941D /* Proxies */, - C836EC991B8A7AA600AB941D /* RxCocoa.swift */, - C836EC9A1B8A7AA600AB941D /* RxTarget.swift */, - ); - path = Common; - sourceTree = ""; - }; - C836EC8C1B8A7AA600AB941D /* Observables */ = { - isa = PBXGroup; - children = ( - C836EC8D1B8A7AA600AB941D /* Implementations */, - C836EC931B8A7AA600AB941D /* NSNotificationCenter+Rx.swift */, - C836EC941B8A7AA600AB941D /* NSObject+Rx+CoreGraphics.swift */, - C836EC951B8A7AA600AB941D /* NSObject+Rx.swift */, - C836EC961B8A7AA600AB941D /* NSURLSession+Rx.swift */, - ); - path = Observables; - sourceTree = ""; - }; - C836EC8D1B8A7AA600AB941D /* Implementations */ = { - isa = PBXGroup; - children = ( - C836EC8E1B8A7AA600AB941D /* ControlTarget.swift */, - C836EC8F1B8A7AA600AB941D /* Deallocating.swift */, - C836EC901B8A7AA600AB941D /* DeinitAction.swift */, - C836EC911B8A7AA600AB941D /* KVOObservable.swift */, - C836EC921B8A7AA600AB941D /* KVOObserver.swift */, - ); - path = Implementations; - sourceTree = ""; - }; - C836EC971B8A7AA600AB941D /* Proxies */ = { - isa = PBXGroup; - children = ( - C836EC981B8A7AA600AB941D /* RxCLLocationManagerDelegateProxy.swift */, - ); - path = Proxies; - sourceTree = ""; - }; - C836EC9C1B8A7AA600AB941D /* iOS */ = { - isa = PBXGroup; - children = ( - C836EC9D1B8A7AA600AB941D /* CoreDataEntityEvent.swift */, - C836EC9E1B8A7AA600AB941D /* DataSources */, - C836ECA11B8A7AA600AB941D /* Events */, - C836ECA31B8A7AA600AB941D /* NSManagedObjectContext+Rx.swift */, - C836ECA41B8A7AA600AB941D /* Protocols */, - C836ECA71B8A7AA600AB941D /* Proxies */, - C836ECB11B8A7AA600AB941D /* UIActionSheet+Rx.swift */, - C836ECB21B8A7AA600AB941D /* UIAlertView+Rx.swift */, - C836ECB31B8A7AA600AB941D /* UIBarButtonItem+Rx.swift */, - C836ECB41B8A7AA600AB941D /* UIButton+Rx.swift */, - C836ECB51B8A7AA600AB941D /* UICollectionView+Rx.swift */, - C836ECB61B8A7AA600AB941D /* UIControl+Rx.swift */, - C836ECB71B8A7AA600AB941D /* UIDatePicker+Rx.swift */, - C836ECB81B8A7AA600AB941D /* UIGestureRecognizer+Rx.swift */, - C836ECB91B8A7AA600AB941D /* UIImageView+Rx.swift */, - C836ECBA1B8A7AA600AB941D /* UILabel+Rx.swift */, - C836ECBB1B8A7AA600AB941D /* UIScrollView+Rx.swift */, - C836ECBC1B8A7AA600AB941D /* UISearchBar+Rx.swift */, - C836ECBD1B8A7AA600AB941D /* UISegmentedControl+Rx.swift */, - C836ECBE1B8A7AA600AB941D /* UISlider+Rx.swift */, - C836ECBF1B8A7AA600AB941D /* UISwitch+Rx.swift */, - C836ECC01B8A7AA600AB941D /* UITableView+Rx.swift */, - C836ECC11B8A7AA600AB941D /* UITextField+Rx.swift */, - C836ECC21B8A7AA600AB941D /* UITextView+Rx.swift */, - ); - path = iOS; - sourceTree = ""; - }; - C836EC9E1B8A7AA600AB941D /* DataSources */ = { - isa = PBXGroup; - children = ( - C836EC9F1B8A7AA600AB941D /* RxCollectionViewReactiveArrayDataSource.swift */, - C836ECA01B8A7AA600AB941D /* RxTableViewReactiveArrayDataSource.swift */, - ); - path = DataSources; - sourceTree = ""; - }; - C836ECA11B8A7AA600AB941D /* Events */ = { - isa = PBXGroup; - children = ( - C836ECA21B8A7AA600AB941D /* ItemEvents.swift */, - ); - path = Events; - sourceTree = ""; - }; - C836ECA41B8A7AA600AB941D /* Protocols */ = { - isa = PBXGroup; - children = ( - C836ECA51B8A7AA600AB941D /* RxCollectionViewDataSourceType.swift */, - C836ECA61B8A7AA600AB941D /* RxTableViewDataSourceType.swift */, - ); - path = Protocols; - sourceTree = ""; - }; - C836ECA71B8A7AA600AB941D /* Proxies */ = { - isa = PBXGroup; - children = ( - C836ECA81B8A7AA600AB941D /* RxActionSheetDelegateProxy.swift */, - C836ECA91B8A7AA600AB941D /* RxAlertViewDelegateProxy.swift */, - C836ECAA1B8A7AA600AB941D /* RxCollectionViewDataSourceProxy.swift */, - C836ECAB1B8A7AA600AB941D /* RxCollectionViewDelegateProxy.swift */, - C836ECAC1B8A7AA600AB941D /* RxScrollViewDelegateProxy.swift */, - C836ECAD1B8A7AA600AB941D /* RxSearchBarDelegateProxy.swift */, - C836ECAE1B8A7AA600AB941D /* RxTableViewDataSourceProxy.swift */, - C836ECAF1B8A7AA600AB941D /* RxTableViewDelegateProxy.swift */, - C836ECB01B8A7AA600AB941D /* RxTextViewDelegateProxy.swift */, - ); - path = Proxies; - sourceTree = ""; - }; C859B9A21B45C5D900D012D7 /* 07 PartialUpdates */ = { isa = PBXGroup; children = ( @@ -948,6 +817,7 @@ children = ( C8AF26F11B49ABD300131C03 /* README.md */, C88C78621B3EB0A00061C5AB /* DataSources */, + C8A7501E1B94E77C00D8D046 /* RxDataSourceStarterKit.swift */, C88C788E1B3F14FD0061C5AB /* Changeset.swift */, C88C78691B3EB0A00061C5AB /* SectionedViewType.swift */, C88C78981B4012A90061C5AB /* SectionModelType.swift */, @@ -980,194 +850,345 @@ path = CoreData; sourceTree = ""; }; - C8C3DA141B944DE3004D233E /* RxSwift */ = { + C8A74E9E1B94E5F400D8D046 /* RxSwift */ = { isa = PBXGroup; children = ( - C8C3DA151B944DE3004D233E /* AnyObject+Rx.swift */, - C8C3DA161B944DE3004D233E /* Cancelable.swift */, - C8C3DA171B944DE3004D233E /* Concurrency */, - C8C3DA1A1B944DE3004D233E /* ConnectableObservableType.swift */, - C8C3DA1B1B944DE3004D233E /* DataStructures */, - C8C3DA1F1B944DE3004D233E /* Disposable.swift */, - C8C3DA201B944DE3004D233E /* Disposables */, - C8C3DA301B944DE3004D233E /* Error.swift */, - C8C3DA311B944DE3004D233E /* Event.swift */, - C8C3DA321B944DE3004D233E /* ImmediateScheduler.swift */, - C8C3DA331B944DE3004D233E /* Info.plist */, - C8C3DA341B944DE3004D233E /* Observable+Extensions.swift */, - C8C3DA351B944DE3004D233E /* Observable.swift */, - C8C3DA361B944DE3004D233E /* Observables */, - C8C3DA6F1B944DE3004D233E /* ObservableType.swift */, - C8C3DA701B944DE3004D233E /* Observer.swift */, - C8C3DA711B944DE3004D233E /* ObserverOf.swift */, - C8C3DA721B944DE3004D233E /* Observers */, - C8C3DA7B1B944DE3004D233E /* ObserverType+Extensions.swift */, - C8C3DA7C1B944DE3004D233E /* ObserverType.swift */, - C8C3DA7D1B944DE3004D233E /* Rx.swift */, - C8C3DA7E1B944DE3004D233E /* RxBox.swift */, - C8C3DA7F1B944DE3004D233E /* RxResult.swift */, - C8C3DA801B944DE3004D233E /* Scheduler.swift */, - C8C3DA811B944DE3004D233E /* Schedulers */, - C8C3DA8B1B944DE3004D233E /* Subjects */, + C8A74E9F1B94E5F400D8D046 /* AnyObject+Rx.swift */, + C8A74EA01B94E5F400D8D046 /* Cancelable.swift */, + C8A74EA11B94E5F400D8D046 /* Concurrency */, + C8A74EA41B94E5F400D8D046 /* ConnectableObservableType.swift */, + C8A74EA51B94E5F400D8D046 /* DataStructures */, + C8A74EA91B94E5F400D8D046 /* Disposable.swift */, + C8A74EAA1B94E5F400D8D046 /* Disposables */, + C8A74EBA1B94E5F400D8D046 /* Error.swift */, + C8A74EBB1B94E5F400D8D046 /* Event.swift */, + C8A74EBC1B94E5F400D8D046 /* ImmediateScheduler.swift */, + C8A74EBD1B94E5F400D8D046 /* Info.plist */, + C8A74EBE1B94E5F400D8D046 /* Observable+Extensions.swift */, + C8A74EBF1B94E5F400D8D046 /* Observable.swift */, + C8A74EC01B94E5F400D8D046 /* Observables */, + C8A74EF91B94E5F400D8D046 /* ObservableType.swift */, + C8A74EFA1B94E5F400D8D046 /* Observer.swift */, + C8A74EFB1B94E5F400D8D046 /* ObserverOf.swift */, + C8A74EFC1B94E5F400D8D046 /* Observers */, + C8A74F051B94E5F400D8D046 /* ObserverType+Extensions.swift */, + C8A74F061B94E5F400D8D046 /* ObserverType.swift */, + C8A74F071B94E5F400D8D046 /* Rx.swift */, + C8A74F081B94E5F400D8D046 /* RxBox.swift */, + C8A74F091B94E5F400D8D046 /* RxResult.swift */, + C8A74F0A1B94E5F400D8D046 /* Scheduler.swift */, + C8A74F0B1B94E5F400D8D046 /* Schedulers */, + C8A74F151B94E5F400D8D046 /* Subjects */, ); name = RxSwift; path = ../RxSwift; sourceTree = ""; }; - C8C3DA171B944DE3004D233E /* Concurrency */ = { + C8A74EA11B94E5F400D8D046 /* Concurrency */ = { isa = PBXGroup; children = ( - C8C3DA181B944DE3004D233E /* AsyncLock.swift */, - C8C3DA191B944DE3004D233E /* Lock.swift */, + C8A74EA21B94E5F400D8D046 /* AsyncLock.swift */, + C8A74EA31B94E5F400D8D046 /* Lock.swift */, ); path = Concurrency; sourceTree = ""; }; - C8C3DA1B1B944DE3004D233E /* DataStructures */ = { + C8A74EA51B94E5F400D8D046 /* DataStructures */ = { isa = PBXGroup; children = ( - C8C3DA1C1B944DE3004D233E /* Bag.swift */, - C8C3DA1D1B944DE3004D233E /* InfiniteSequence.swift */, - C8C3DA1E1B944DE3004D233E /* Queue.swift */, + C8A74EA61B94E5F400D8D046 /* Bag.swift */, + C8A74EA71B94E5F400D8D046 /* InfiniteSequence.swift */, + C8A74EA81B94E5F400D8D046 /* Queue.swift */, ); path = DataStructures; sourceTree = ""; }; - C8C3DA201B944DE3004D233E /* Disposables */ = { + C8A74EAA1B94E5F400D8D046 /* Disposables */ = { isa = PBXGroup; children = ( - C8C3DA211B944DE3004D233E /* AnonymousDisposable.swift */, - C8C3DA221B944DE3004D233E /* BinaryDisposable.swift */, - C8C3DA231B944DE3004D233E /* BooleanDisposable.swift */, - C8C3DA241B944DE3004D233E /* CompositeDisposable.swift */, - C8C3DA251B944DE3004D233E /* DisposeBag.swift */, - C8C3DA261B944DE3004D233E /* DisposeBase.swift */, - C8C3DA271B944DE3004D233E /* NAryDisposable.swift */, - C8C3DA281B944DE3004D233E /* NAryDisposable.tt */, - C8C3DA291B944DE3004D233E /* NopDisposable.swift */, - C8C3DA2A1B944DE3004D233E /* ScheduledDisposable.swift */, - C8C3DA2B1B944DE3004D233E /* ScopedDispose.swift */, - C8C3DA2C1B944DE3004D233E /* SerialDisposable.swift */, - C8C3DA2D1B944DE3004D233E /* SingleAssignmentDisposable.swift */, - C8C3DA2E1B944DE3004D233E /* StableCompositeDisposable.swift */, - C8C3DA2F1B944DE3004D233E /* TernaryDisposable.swift */, + C8A74EAB1B94E5F400D8D046 /* AnonymousDisposable.swift */, + C8A74EAC1B94E5F400D8D046 /* BinaryDisposable.swift */, + C8A74EAD1B94E5F400D8D046 /* BooleanDisposable.swift */, + C8A74EAE1B94E5F400D8D046 /* CompositeDisposable.swift */, + C8A74EAF1B94E5F400D8D046 /* DisposeBag.swift */, + C8A74EB01B94E5F400D8D046 /* DisposeBase.swift */, + C8A74EB11B94E5F400D8D046 /* NAryDisposable.swift */, + C8A74EB21B94E5F400D8D046 /* NAryDisposable.tt */, + C8A74EB31B94E5F400D8D046 /* NopDisposable.swift */, + C8A74EB41B94E5F400D8D046 /* ScheduledDisposable.swift */, + C8A74EB51B94E5F400D8D046 /* ScopedDispose.swift */, + C8A74EB61B94E5F400D8D046 /* SerialDisposable.swift */, + C8A74EB71B94E5F400D8D046 /* SingleAssignmentDisposable.swift */, + C8A74EB81B94E5F400D8D046 /* StableCompositeDisposable.swift */, + C8A74EB91B94E5F400D8D046 /* TernaryDisposable.swift */, ); path = Disposables; sourceTree = ""; }; - C8C3DA361B944DE3004D233E /* Observables */ = { + C8A74EC01B94E5F400D8D046 /* Observables */ = { isa = PBXGroup; children = ( - C8C3DA371B944DE3004D233E /* Implementations */, - C8C3DA661B944DE3004D233E /* Observable+Aggregate.swift */, - C8C3DA671B944DE3004D233E /* Observable+Binding.swift */, - C8C3DA681B944DE3004D233E /* Observable+Concurrency.swift */, - C8C3DA691B944DE3004D233E /* Observable+Creation.swift */, - C8C3DA6A1B944DE3004D233E /* Observable+Debug.swift */, - C8C3DA6B1B944DE3004D233E /* Observable+Multiple.swift */, - C8C3DA6C1B944DE3004D233E /* Observable+Single.swift */, - C8C3DA6D1B944DE3004D233E /* Observable+StandardSequenceOperators.swift */, - C8C3DA6E1B944DE3004D233E /* Observable+Time.swift */, + C8A74EC11B94E5F400D8D046 /* Implementations */, + C8A74EF01B94E5F400D8D046 /* Observable+Aggregate.swift */, + C8A74EF11B94E5F400D8D046 /* Observable+Binding.swift */, + C8A74EF21B94E5F400D8D046 /* Observable+Concurrency.swift */, + C8A74EF31B94E5F400D8D046 /* Observable+Creation.swift */, + C8A74EF41B94E5F400D8D046 /* Observable+Debug.swift */, + C8A74EF51B94E5F400D8D046 /* Observable+Multiple.swift */, + C8A74EF61B94E5F400D8D046 /* Observable+Single.swift */, + C8A74EF71B94E5F400D8D046 /* Observable+StandardSequenceOperators.swift */, + C8A74EF81B94E5F400D8D046 /* Observable+Time.swift */, ); path = Observables; sourceTree = ""; }; - C8C3DA371B944DE3004D233E /* Implementations */ = { + C8A74EC11B94E5F400D8D046 /* Implementations */ = { isa = PBXGroup; children = ( - C8C3DA381B944DE3004D233E /* Amb.swift */, - C8C3DA391B944DE3004D233E /* AnonymousObservable.swift */, - C8C3DA3A1B944DE3004D233E /* AsObservable.swift */, - C8C3DA3B1B944DE3004D233E /* Catch.swift */, - C8C3DA3C1B944DE3004D233E /* CombineLatest+arity.swift */, - C8C3DA3D1B944DE3004D233E /* CombineLatest+arity.tt */, - C8C3DA3E1B944DE3004D233E /* CombineLatest+CollectionType.swift */, - C8C3DA3F1B944DE3004D233E /* CombineLatest.swift */, - C8C3DA401B944DE3004D233E /* Concat.swift */, - C8C3DA411B944DE3004D233E /* ConnectableObservable.swift */, - C8C3DA421B944DE3004D233E /* Debug.swift */, - C8C3DA431B944DE3004D233E /* Deferred.swift */, - C8C3DA441B944DE3004D233E /* DelaySubscription.swift */, - C8C3DA451B944DE3004D233E /* DistinctUntilChanged.swift */, - C8C3DA461B944DE3004D233E /* Do.swift */, - C8C3DA471B944DE3004D233E /* Empty.swift */, - C8C3DA481B944DE3004D233E /* FailWith.swift */, - C8C3DA491B944DE3004D233E /* Filter.swift */, - C8C3DA4A1B944DE3004D233E /* FlatMap.swift */, - C8C3DA4B1B944DE3004D233E /* Just.swift */, - C8C3DA4C1B944DE3004D233E /* Map.swift */, - C8C3DA4D1B944DE3004D233E /* Merge.swift */, - C8C3DA4E1B944DE3004D233E /* Multicast.swift */, - C8C3DA4F1B944DE3004D233E /* Never.swift */, - C8C3DA501B944DE3004D233E /* ObserveOn.swift */, - C8C3DA511B944DE3004D233E /* ObserveOnSerialDispatchQueue.swift */, - C8C3DA521B944DE3004D233E /* ObserveSingleOn.swift */, - C8C3DA531B944DE3004D233E /* Producer.swift */, - C8C3DA541B944DE3004D233E /* Reduce.swift */, - C8C3DA551B944DE3004D233E /* RefCount.swift */, - C8C3DA561B944DE3004D233E /* Sample.swift */, - C8C3DA571B944DE3004D233E /* Scan.swift */, - C8C3DA581B944DE3004D233E /* Sink.swift */, - C8C3DA591B944DE3004D233E /* Skip.swift */, - C8C3DA5A1B944DE3004D233E /* StartWith.swift */, - C8C3DA5B1B944DE3004D233E /* SubscribeOn.swift */, - C8C3DA5C1B944DE3004D233E /* Switch.swift */, - C8C3DA5D1B944DE3004D233E /* Take.swift */, - C8C3DA5E1B944DE3004D233E /* TakeUntil.swift */, - C8C3DA5F1B944DE3004D233E /* TakeWhile.swift */, - C8C3DA601B944DE3004D233E /* Throttle.swift */, - C8C3DA611B944DE3004D233E /* Timer.swift */, - C8C3DA621B944DE3004D233E /* Zip+arity.swift */, - C8C3DA631B944DE3004D233E /* Zip+arity.tt */, - C8C3DA641B944DE3004D233E /* Zip+CollectionType.swift */, - C8C3DA651B944DE3004D233E /* Zip.swift */, + C8A74EC21B94E5F400D8D046 /* Amb.swift */, + C8A74EC31B94E5F400D8D046 /* AnonymousObservable.swift */, + C8A74EC41B94E5F400D8D046 /* AsObservable.swift */, + C8A74EC51B94E5F400D8D046 /* Catch.swift */, + C8A74EC61B94E5F400D8D046 /* CombineLatest+arity.swift */, + C8A74EC71B94E5F400D8D046 /* CombineLatest+arity.tt */, + C8A74EC81B94E5F400D8D046 /* CombineLatest+CollectionType.swift */, + C8A74EC91B94E5F400D8D046 /* CombineLatest.swift */, + C8A74ECA1B94E5F400D8D046 /* Concat.swift */, + C8A74ECB1B94E5F400D8D046 /* ConnectableObservable.swift */, + C8A74ECC1B94E5F400D8D046 /* Debug.swift */, + C8A74ECD1B94E5F400D8D046 /* Deferred.swift */, + C8A74ECE1B94E5F400D8D046 /* DelaySubscription.swift */, + C8A74ECF1B94E5F400D8D046 /* DistinctUntilChanged.swift */, + C8A74ED01B94E5F400D8D046 /* Do.swift */, + C8A74ED11B94E5F400D8D046 /* Empty.swift */, + C8A74ED21B94E5F400D8D046 /* FailWith.swift */, + C8A74ED31B94E5F400D8D046 /* Filter.swift */, + C8A74ED41B94E5F400D8D046 /* FlatMap.swift */, + C8A74ED51B94E5F400D8D046 /* Just.swift */, + C8A74ED61B94E5F400D8D046 /* Map.swift */, + C8A74ED71B94E5F400D8D046 /* Merge.swift */, + C8A74ED81B94E5F400D8D046 /* Multicast.swift */, + C8A74ED91B94E5F400D8D046 /* Never.swift */, + C8A74EDA1B94E5F400D8D046 /* ObserveOn.swift */, + C8A74EDB1B94E5F400D8D046 /* ObserveOnSerialDispatchQueue.swift */, + C8A74EDC1B94E5F400D8D046 /* ObserveSingleOn.swift */, + C8A74EDD1B94E5F400D8D046 /* Producer.swift */, + C8A74EDE1B94E5F400D8D046 /* Reduce.swift */, + C8A74EDF1B94E5F400D8D046 /* RefCount.swift */, + C8A74EE01B94E5F400D8D046 /* Sample.swift */, + C8A74EE11B94E5F400D8D046 /* Scan.swift */, + C8A74EE21B94E5F400D8D046 /* Sink.swift */, + C8A74EE31B94E5F400D8D046 /* Skip.swift */, + C8A74EE41B94E5F400D8D046 /* StartWith.swift */, + C8A74EE51B94E5F400D8D046 /* SubscribeOn.swift */, + C8A74EE61B94E5F400D8D046 /* Switch.swift */, + C8A74EE71B94E5F400D8D046 /* Take.swift */, + C8A74EE81B94E5F400D8D046 /* TakeUntil.swift */, + C8A74EE91B94E5F400D8D046 /* TakeWhile.swift */, + C8A74EEA1B94E5F400D8D046 /* Throttle.swift */, + C8A74EEB1B94E5F400D8D046 /* Timer.swift */, + C8A74EEC1B94E5F400D8D046 /* Zip+arity.swift */, + C8A74EED1B94E5F400D8D046 /* Zip+arity.tt */, + C8A74EEE1B94E5F400D8D046 /* Zip+CollectionType.swift */, + C8A74EEF1B94E5F400D8D046 /* Zip.swift */, ); path = Implementations; sourceTree = ""; }; - C8C3DA721B944DE3004D233E /* Observers */ = { + C8A74EFC1B94E5F400D8D046 /* Observers */ = { isa = PBXGroup; children = ( - C8C3DA731B944DE3004D233E /* AnonymousObserver.swift */, - C8C3DA741B944DE3004D233E /* AutoDetachObserver.swift */, - C8C3DA751B944DE3004D233E /* DoneObserver.swift */, - C8C3DA761B944DE3004D233E /* NopObserver.swift */, - C8C3DA771B944DE3004D233E /* ObserverBase.swift */, - C8C3DA781B944DE3004D233E /* SafeObserver.swift */, - C8C3DA791B944DE3004D233E /* ScheduledObserver.swift */, - C8C3DA7A1B944DE3004D233E /* TailRecursiveSink.swift */, + C8A74EFD1B94E5F400D8D046 /* AnonymousObserver.swift */, + C8A74EFE1B94E5F400D8D046 /* AutoDetachObserver.swift */, + C8A74EFF1B94E5F400D8D046 /* DoneObserver.swift */, + C8A74F001B94E5F400D8D046 /* NopObserver.swift */, + C8A74F011B94E5F400D8D046 /* ObserverBase.swift */, + C8A74F021B94E5F400D8D046 /* SafeObserver.swift */, + C8A74F031B94E5F400D8D046 /* ScheduledObserver.swift */, + C8A74F041B94E5F400D8D046 /* TailRecursiveSink.swift */, ); path = Observers; sourceTree = ""; }; - C8C3DA811B944DE3004D233E /* Schedulers */ = { + C8A74F0B1B94E5F400D8D046 /* Schedulers */ = { isa = PBXGroup; children = ( - C8C3DA821B944DE3004D233E /* ConcurrentDispatchQueueScheduler.swift */, - C8C3DA831B944DE3004D233E /* CurrentThreadScheduler.swift */, - C8C3DA841B944DE3004D233E /* DispatchQueueSchedulerPriority.swift */, - C8C3DA851B944DE3004D233E /* MainScheduler.swift */, - C8C3DA861B944DE3004D233E /* OperationQueueScheduler.swift */, - C8C3DA871B944DE3004D233E /* RecursiveScheduler.swift */, - C8C3DA881B944DE3004D233E /* Scheduler+Extensions.swift */, - C8C3DA891B944DE3004D233E /* SchedulerServices+Emulation.swift */, - C8C3DA8A1B944DE3004D233E /* SerialDispatchQueueScheduler.swift */, + C8A74F0C1B94E5F400D8D046 /* ConcurrentDispatchQueueScheduler.swift */, + C8A74F0D1B94E5F400D8D046 /* CurrentThreadScheduler.swift */, + C8A74F0E1B94E5F400D8D046 /* DispatchQueueSchedulerPriority.swift */, + C8A74F0F1B94E5F400D8D046 /* MainScheduler.swift */, + C8A74F101B94E5F400D8D046 /* OperationQueueScheduler.swift */, + C8A74F111B94E5F400D8D046 /* RecursiveScheduler.swift */, + C8A74F121B94E5F400D8D046 /* Scheduler+Extensions.swift */, + C8A74F131B94E5F400D8D046 /* SchedulerServices+Emulation.swift */, + C8A74F141B94E5F400D8D046 /* SerialDispatchQueueScheduler.swift */, ); path = Schedulers; sourceTree = ""; }; - C8C3DA8B1B944DE3004D233E /* Subjects */ = { + C8A74F151B94E5F400D8D046 /* Subjects */ = { isa = PBXGroup; children = ( - C8C3DA8C1B944DE3004D233E /* BehaviorSubject.swift */, - C8C3DA8D1B944DE3004D233E /* PublishSubject.swift */, - C8C3DA8E1B944DE3004D233E /* ReplaySubject.swift */, - C8C3DA8F1B944DE3004D233E /* SubjectType.swift */, - C8C3DA901B944DE3004D233E /* Variable.swift */, + C8A74F161B94E5F400D8D046 /* BehaviorSubject.swift */, + C8A74F171B94E5F400D8D046 /* PublishSubject.swift */, + C8A74F181B94E5F400D8D046 /* ReplaySubject.swift */, + C8A74F191B94E5F400D8D046 /* SubjectType.swift */, + C8A74F1A1B94E5F400D8D046 /* Variable.swift */, ); path = Subjects; sourceTree = ""; }; + C8A74F8F1B94E5FE00D8D046 /* RxCocoa */ = { + isa = PBXGroup; + children = ( + C8A74F901B94E5FE00D8D046 /* Common */, + C8A74FB01B94E5FE00D8D046 /* Info.plist */, + C8A74FB11B94E5FE00D8D046 /* iOS */, + C8A74FDE1B94E5FE00D8D046 /* RxCocoa.h */, + ); + name = RxCocoa; + path = ../RxCocoa; + sourceTree = ""; + }; + C8A74F901B94E5FE00D8D046 /* Common */ = { + isa = PBXGroup; + children = ( + C8A74F911B94E5FE00D8D046 /* _RX.h */, + C8A74F921B94E5FE00D8D046 /* _RX.m */, + C8A74F931B94E5FE00D8D046 /* _RXDelegateProxy.h */, + C8A74F941B94E5FE00D8D046 /* _RXDelegateProxy.m */, + C8A74F951B94E5FE00D8D046 /* _RXKVOObserver.h */, + C8A74F961B94E5FE00D8D046 /* _RXKVOObserver.m */, + C8A74F971B94E5FE00D8D046 /* _RXSwizzling.h */, + C8A74F981B94E5FE00D8D046 /* _RXSwizzling.m */, + C8A74F991B94E5FE00D8D046 /* CLLocationManager+Rx.swift */, + C8A74F9A1B94E5FE00D8D046 /* CocoaUnits */, + C8A74F9D1B94E5FE00D8D046 /* DelegateProxy.swift */, + C8A74F9E1B94E5FE00D8D046 /* DelegateProxyType.swift */, + C8A74F9F1B94E5FE00D8D046 /* Logging.swift */, + C8A74FA01B94E5FE00D8D046 /* Observable+CocoaExtensions.swift */, + C8A74FA11B94E5FE00D8D046 /* Observables */, + C8A74FAC1B94E5FE00D8D046 /* Proxies */, + C8A74FAE1B94E5FE00D8D046 /* RxCocoa.swift */, + C8A74FAF1B94E5FE00D8D046 /* RxTarget.swift */, + ); + path = Common; + sourceTree = ""; + }; + C8A74F9A1B94E5FE00D8D046 /* CocoaUnits */ = { + isa = PBXGroup; + children = ( + C8A74F9B1B94E5FE00D8D046 /* ControlEvent.swift */, + C8A74F9C1B94E5FE00D8D046 /* ControlProperty.swift */, + ); + path = CocoaUnits; + sourceTree = ""; + }; + C8A74FA11B94E5FE00D8D046 /* Observables */ = { + isa = PBXGroup; + children = ( + C8A74FA21B94E5FE00D8D046 /* Implementations */, + C8A74FA81B94E5FE00D8D046 /* NSNotificationCenter+Rx.swift */, + C8A74FA91B94E5FE00D8D046 /* NSObject+Rx+CoreGraphics.swift */, + C8A74FAA1B94E5FE00D8D046 /* NSObject+Rx.swift */, + C8A74FAB1B94E5FE00D8D046 /* NSURLSession+Rx.swift */, + ); + path = Observables; + sourceTree = ""; + }; + C8A74FA21B94E5FE00D8D046 /* Implementations */ = { + isa = PBXGroup; + children = ( + C8A74FA31B94E5FE00D8D046 /* ControlTarget.swift */, + C8A74FA41B94E5FE00D8D046 /* Deallocating.swift */, + C8A74FA51B94E5FE00D8D046 /* DeinitAction.swift */, + C8A74FA61B94E5FE00D8D046 /* KVOObservable.swift */, + C8A74FA71B94E5FE00D8D046 /* KVOObserver.swift */, + ); + path = Implementations; + sourceTree = ""; + }; + C8A74FAC1B94E5FE00D8D046 /* Proxies */ = { + isa = PBXGroup; + children = ( + C8A74FAD1B94E5FE00D8D046 /* RxCLLocationManagerDelegateProxy.swift */, + ); + path = Proxies; + sourceTree = ""; + }; + C8A74FB11B94E5FE00D8D046 /* iOS */ = { + isa = PBXGroup; + children = ( + C8A74FB21B94E5FE00D8D046 /* CoreDataEntityEvent.swift */, + C8A74FB31B94E5FE00D8D046 /* DataSources */, + C8A74FB61B94E5FE00D8D046 /* Events */, + C8A74FB81B94E5FE00D8D046 /* NSManagedObjectContext+Rx.swift */, + C8A74FB91B94E5FE00D8D046 /* Protocols */, + C8A74FBC1B94E5FE00D8D046 /* Proxies */, + C8A74FC61B94E5FE00D8D046 /* UIActionSheet+Rx.swift */, + C8A74FC71B94E5FE00D8D046 /* UIAlertView+Rx.swift */, + C8A74FC81B94E5FE00D8D046 /* UIBarButtonItem+Rx.swift */, + C8A74FC91B94E5FE00D8D046 /* UIButton+Rx.swift */, + C8A74FCA1B94E5FE00D8D046 /* UICollectionView+Rx.swift */, + C8A74FCB1B94E5FE00D8D046 /* UIControl+Rx.swift */, + C8A74FCC1B94E5FE00D8D046 /* UIDatePicker+Rx.swift */, + C8A74FCD1B94E5FE00D8D046 /* UIGestureRecognizer+Rx.swift */, + C8A74FCE1B94E5FE00D8D046 /* UIImageView+Rx.swift */, + C8A74FCF1B94E5FE00D8D046 /* UILabel+Rx.swift */, + C8A74FD01B94E5FE00D8D046 /* UIScrollView+Rx.swift */, + C8A74FD11B94E5FE00D8D046 /* UISearchBar+Rx.swift */, + C8A74FD21B94E5FE00D8D046 /* UISegmentedControl+Rx.swift */, + C8A74FD31B94E5FE00D8D046 /* UISlider+Rx.swift */, + C8A74FD41B94E5FE00D8D046 /* UISwitch+Rx.swift */, + C8A74FD51B94E5FE00D8D046 /* UITableView+Rx.swift */, + C8A74FD61B94E5FE00D8D046 /* UITextField+Rx.swift */, + C8A74FD71B94E5FE00D8D046 /* UITextView+Rx.swift */, + ); + path = iOS; + sourceTree = ""; + }; + C8A74FB31B94E5FE00D8D046 /* DataSources */ = { + isa = PBXGroup; + children = ( + C8A74FB41B94E5FE00D8D046 /* RxCollectionViewReactiveArrayDataSource.swift */, + C8A74FB51B94E5FE00D8D046 /* RxTableViewReactiveArrayDataSource.swift */, + ); + path = DataSources; + sourceTree = ""; + }; + C8A74FB61B94E5FE00D8D046 /* Events */ = { + isa = PBXGroup; + children = ( + C8A74FB71B94E5FE00D8D046 /* ItemEvents.swift */, + ); + path = Events; + sourceTree = ""; + }; + C8A74FB91B94E5FE00D8D046 /* Protocols */ = { + isa = PBXGroup; + children = ( + C8A74FBA1B94E5FE00D8D046 /* RxCollectionViewDataSourceType.swift */, + C8A74FBB1B94E5FE00D8D046 /* RxTableViewDataSourceType.swift */, + ); + path = Protocols; + sourceTree = ""; + }; + C8A74FBC1B94E5FE00D8D046 /* Proxies */ = { + isa = PBXGroup; + children = ( + C8A74FBD1B94E5FE00D8D046 /* RxActionSheetDelegateProxy.swift */, + C8A74FBE1B94E5FE00D8D046 /* RxAlertViewDelegateProxy.swift */, + C8A74FBF1B94E5FE00D8D046 /* RxCollectionViewDataSourceProxy.swift */, + C8A74FC01B94E5FE00D8D046 /* RxCollectionViewDelegateProxy.swift */, + C8A74FC11B94E5FE00D8D046 /* RxScrollViewDelegateProxy.swift */, + C8A74FC21B94E5FE00D8D046 /* RxSearchBarDelegateProxy.swift */, + C8A74FC31B94E5FE00D8D046 /* RxTableViewDataSourceProxy.swift */, + C8A74FC41B94E5FE00D8D046 /* RxTableViewDelegateProxy.swift */, + C8A74FC51B94E5FE00D8D046 /* RxTextViewDelegateProxy.swift */, + ); + path = Proxies; + sourceTree = ""; + }; C8DF92C71B0B2F84009BCF9A /* iOS */ = { isa = PBXGroup; children = ( @@ -1294,16 +1315,16 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - C8C3DAAC1B944DE3004D233E /* Info.plist in Resources */, C8297E5D1B6CF905000589EA /* WikipediaSearchCell.xib in Resources */, - C8C3DAB41B944DE3004D233E /* CombineLatest+arity.tt in Resources */, C8297E5E1B6CF905000589EA /* LaunchScreen.xib in Resources */, - C8C3DAA11B944DE3004D233E /* NAryDisposable.tt in Resources */, + C8A74F3E1B94E5F400D8D046 /* CombineLatest+arity.tt in Resources */, C8297E5F1B6CF905000589EA /* WikipediaImageCell.xib in Resources */, + C8A74F641B94E5F400D8D046 /* Zip+arity.tt in Resources */, + C8A74F2B1B94E5F400D8D046 /* NAryDisposable.tt in Resources */, C8297E601B6CF905000589EA /* Images.xcassets in Resources */, C8297E611B6CF905000589EA /* Main.storyboard in Resources */, - C836ECDE1B8A7AA600AB941D /* Info.plist in Resources */, - C8C3DADA1B944DE3004D233E /* Zip+arity.tt in Resources */, + C8A74FF61B94E5FE00D8D046 /* Info.plist in Resources */, + C8A74F361B94E5F400D8D046 /* Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1335,215 +1356,219 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C8C3DAAF1B944DE3004D233E /* Amb.swift in Sources */, - C8C3DAE71B944DE4004D233E /* Observer.swift in Sources */, C8297E2F1B6CF905000589EA /* RxTableViewSectionedAnimatedDataSource.swift in Sources */, - C8C3DA991B944DE3004D233E /* Disposable.swift in Sources */, - C836ECE01B8A7AA600AB941D /* RxCollectionViewReactiveArrayDataSource.swift in Sources */, - C8C3DA961B944DE3004D233E /* Bag.swift in Sources */, - C8C3DACF1B944DE3004D233E /* Sink.swift in Sources */, - C836ECE81B8A7AA600AB941D /* RxCollectionViewDataSourceProxy.swift in Sources */, + C8A7501F1B94E77C00D8D046 /* RxDataSourceStarterKit.swift in Sources */, + C8A74F511B94E5F400D8D046 /* ObserveOn.swift in Sources */, + C8A74FFF1B94E5FE00D8D046 /* RxAlertViewDelegateProxy.swift in Sources */, + C8A7500F1B94E5FE00D8D046 /* UIImageView+Rx.swift in Sources */, + C8A74FE21B94E5FE00D8D046 /* _RXSwizzling.m in Sources */, + C8A74F311B94E5F400D8D046 /* StableCompositeDisposable.swift in Sources */, + C8A74FF91B94E5FE00D8D046 /* RxTableViewReactiveArrayDataSource.swift in Sources */, + C8A74F8C1B94E5F400D8D046 /* ReplaySubject.swift in Sources */, + C8A74F731B94E5F400D8D046 /* AnonymousObserver.swift in Sources */, + C8A74F3B1B94E5F400D8D046 /* AsObservable.swift in Sources */, + C8A750031B94E5FE00D8D046 /* RxSearchBarDelegateProxy.swift in Sources */, + C8A74F4C1B94E5F400D8D046 /* Just.swift in Sources */, + C8A74F7F1B94E5F400D8D046 /* RxResult.swift in Sources */, + C8A750151B94E5FE00D8D046 /* UISwitch+Rx.swift in Sources */, C8297E301B6CF905000589EA /* RandomUserAPI.swift in Sources */, C8297E311B6CF905000589EA /* SearchResultViewModel.swift in Sources */, + C8A74F561B94E5F400D8D046 /* RefCount.swift in Sources */, + C8A74FEB1B94E5FE00D8D046 /* Deallocating.swift in Sources */, + C8A74F541B94E5F400D8D046 /* Producer.swift in Sources */, C8297E321B6CF905000589EA /* HtmlParsing.swift in Sources */, - C836ECE91B8A7AA600AB941D /* RxCollectionViewDelegateProxy.swift in Sources */, C8297E331B6CF905000589EA /* NumberCell.swift in Sources */, - C8C3DAF91B944DE4004D233E /* DispatchQueueSchedulerPriority.swift in Sources */, - C8C3DAA61B944DE3004D233E /* SingleAssignmentDisposable.swift in Sources */, - C8C3DAD71B944DE3004D233E /* Throttle.swift in Sources */, - C836ECE21B8A7AA600AB941D /* ItemEvents.swift in Sources */, - C8C3DAA41B944DE3004D233E /* ScopedDispose.swift in Sources */, - C8C3DA9C1B944DE3004D233E /* BooleanDisposable.swift in Sources */, - C8C3DAC31B944DE3004D233E /* Map.swift in Sources */, - C8C3DB011B944DE4004D233E /* PublishSubject.swift in Sources */, 07A5C3DC1B70B703001EFE5C /* CalculatorViewController.swift in Sources */, C8297E341B6CF905000589EA /* UIImageView+Extensions.swift in Sources */, - C8C3DABF1B944DE3004D233E /* FailWith.swift in Sources */, - C8C3DABC1B944DE3004D233E /* DistinctUntilChanged.swift in Sources */, - C8C3DAAB1B944DE3004D233E /* ImmediateScheduler.swift in Sources */, - C8C3DABA1B944DE3004D233E /* Deferred.swift in Sources */, - C8C3DAC11B944DE3004D233E /* FlatMap.swift in Sources */, - C8C3DAE51B944DE4004D233E /* Observable+Time.swift in Sources */, - C836ECEF1B8A7AA600AB941D /* UIActionSheet+Rx.swift in Sources */, - C836ECD21B8A7AA600AB941D /* ControlTarget.swift in Sources */, - C836ECD61B8A7AA600AB941D /* KVOObserver.swift in Sources */, - C836ECCB1B8A7AA600AB941D /* _RXDelegateProxy.m in Sources */, - C836ECDF1B8A7AA600AB941D /* CoreDataEntityEvent.swift in Sources */, + C8A74F451B94E5F400D8D046 /* DelaySubscription.swift in Sources */, + C8A74F701B94E5F400D8D046 /* ObservableType.swift in Sources */, + C8A74F6D1B94E5F400D8D046 /* Observable+Single.swift in Sources */, + C8A74F421B94E5F400D8D046 /* ConnectableObservable.swift in Sources */, + C8A74F341B94E5F400D8D046 /* Event.swift in Sources */, + C8A74FDF1B94E5FE00D8D046 /* _RX.m in Sources */, + C8A74F1D1B94E5F400D8D046 /* AsyncLock.swift in Sources */, + C8A74F711B94E5F400D8D046 /* Observer.swift in Sources */, + C8A74F4A1B94E5F400D8D046 /* Filter.swift in Sources */, + C8A74F481B94E5F400D8D046 /* Empty.swift in Sources */, C8297E351B6CF905000589EA /* NumberSectionView.swift in Sources */, - C836ECF51B8A7AA600AB941D /* UIDatePicker+Rx.swift in Sources */, - C836ECD11B8A7AA600AB941D /* Logging.swift in Sources */, - C8C3DAEB1B944DE4004D233E /* DoneObserver.swift in Sources */, - C8C3DAD11B944DE3004D233E /* StartWith.swift in Sources */, - C8C3DADC1B944DE3004D233E /* Zip.swift in Sources */, - C8C3DAFD1B944DE4004D233E /* Scheduler+Extensions.swift in Sources */, + C8A74FED1B94E5FE00D8D046 /* KVOObservable.swift in Sources */, + C8A74F671B94E5F400D8D046 /* Observable+Aggregate.swift in Sources */, + C8A74F821B94E5F400D8D046 /* CurrentThreadScheduler.swift in Sources */, + C8A74F531B94E5F400D8D046 /* ObserveSingleOn.swift in Sources */, + C8A74F201B94E5F400D8D046 /* Bag.swift in Sources */, + C8A74F4E1B94E5F400D8D046 /* Merge.swift in Sources */, + C8A74F621B94E5F400D8D046 /* Timer.swift in Sources */, + C8A74F3A1B94E5F400D8D046 /* AnonymousObservable.swift in Sources */, + C8A74F211B94E5F400D8D046 /* InfiniteSequence.swift in Sources */, + C8A74FEC1B94E5FE00D8D046 /* DeinitAction.swift in Sources */, + C8A750041B94E5FE00D8D046 /* RxTableViewDataSourceProxy.swift in Sources */, + C8A750061B94E5FE00D8D046 /* RxTextViewDelegateProxy.swift in Sources */, + C8A74FE41B94E5FE00D8D046 /* ControlEvent.swift in Sources */, + C8A74FE01B94E5FE00D8D046 /* _RXDelegateProxy.m in Sources */, + C8A74F8E1B94E5F400D8D046 /* Variable.swift in Sources */, + C8A74F4B1B94E5F400D8D046 /* FlatMap.swift in Sources */, C8297E361B6CF905000589EA /* RootViewController.swift in Sources */, - C8C3DB001B944DE4004D233E /* BehaviorSubject.swift in Sources */, + C8A750001B94E5FE00D8D046 /* RxCollectionViewDataSourceProxy.swift in Sources */, C8297E371B6CF905000589EA /* RxCollectionViewSectionedDataSource.swift in Sources */, + C8A74F611B94E5F400D8D046 /* Throttle.swift in Sources */, + C8A74F5A1B94E5F400D8D046 /* Skip.swift in Sources */, + C8A74F441B94E5F400D8D046 /* Deferred.swift in Sources */, + C8A74F271B94E5F400D8D046 /* CompositeDisposable.swift in Sources */, + C8A74F5D1B94E5F400D8D046 /* Switch.swift in Sources */, C8297E381B6CF905000589EA /* Changeset.swift in Sources */, C8297E391B6CF905000589EA /* CollectionViewImageCell.swift in Sources */, - C836ECD41B8A7AA600AB941D /* DeinitAction.swift in Sources */, - C8C3DAE41B944DE4004D233E /* Observable+StandardSequenceOperators.swift in Sources */, - C8C3DB041B944DE4004D233E /* Variable.swift in Sources */, - C8C3DAB91B944DE3004D233E /* Debug.swift in Sources */, - C8C3DAF21B944DE4004D233E /* ObserverType.swift in Sources */, - C8C3DAA81B944DE3004D233E /* TernaryDisposable.swift in Sources */, + C8A74F7D1B94E5F400D8D046 /* Rx.swift in Sources */, + C8A74F761B94E5F400D8D046 /* NopObserver.swift in Sources */, + C8A74F371B94E5F400D8D046 /* Observable+Extensions.swift in Sources */, + C8A74F6A1B94E5F400D8D046 /* Observable+Creation.swift in Sources */, + C8A74F261B94E5F400D8D046 /* BooleanDisposable.swift in Sources */, + C8A74F661B94E5F400D8D046 /* Zip.swift in Sources */, + C8A74F281B94E5F400D8D046 /* DisposeBag.swift in Sources */, + C8A750101B94E5FE00D8D046 /* UILabel+Rx.swift in Sources */, + C8A74FF41B94E5FE00D8D046 /* RxCocoa.swift in Sources */, + C8A74F6E1B94E5F400D8D046 /* Observable+StandardSequenceOperators.swift in Sources */, + C8A750091B94E5FE00D8D046 /* UIBarButtonItem+Rx.swift in Sources */, + C8A74FE71B94E5FE00D8D046 /* DelegateProxyType.swift in Sources */, + C8A74FEA1B94E5FE00D8D046 /* ControlTarget.swift in Sources */, + C8A74F631B94E5F400D8D046 /* Zip+arity.swift in Sources */, C8297E3A1B6CF905000589EA /* WikipediaSearchViewController.swift in Sources */, - C8C3DAB01B944DE3004D233E /* AnonymousObservable.swift in Sources */, - C8C3DAC91B944DE3004D233E /* ObserveSingleOn.swift in Sources */, - C836ECED1B8A7AA600AB941D /* RxTableViewDelegateProxy.swift in Sources */, - C8C3DA9B1B944DE3004D233E /* BinaryDisposable.swift in Sources */, - C836ECD51B8A7AA600AB941D /* KVOObservable.swift in Sources */, - C8C3DAA01B944DE3004D233E /* NAryDisposable.swift in Sources */, - C8C3DAB11B944DE3004D233E /* AsObservable.swift in Sources */, - C8C3DAE91B944DE4004D233E /* AnonymousObserver.swift in Sources */, - C836ECF81B8A7AA600AB941D /* UILabel+Rx.swift in Sources */, - C836ECEC1B8A7AA600AB941D /* RxTableViewDataSourceProxy.swift in Sources */, - C8C3DAE21B944DE4004D233E /* Observable+Multiple.swift in Sources */, - C8C3DAD41B944DE3004D233E /* Take.swift in Sources */, - C8C3DAC01B944DE3004D233E /* Filter.swift in Sources */, - C836ECE51B8A7AA600AB941D /* RxTableViewDataSourceType.swift in Sources */, - C8C3DB021B944DE4004D233E /* ReplaySubject.swift in Sources */, - C8C3DA941B944DE3004D233E /* Lock.swift in Sources */, - C836ECDC1B8A7AA600AB941D /* RxCocoa.swift in Sources */, - C836ECFC1B8A7AA600AB941D /* UISlider+Rx.swift in Sources */, - C8C3DACC1B944DE3004D233E /* RefCount.swift in Sources */, - C8C3DAB81B944DE3004D233E /* ConnectableObservable.swift in Sources */, + C8A74FF71B94E5FE00D8D046 /* CoreDataEntityEvent.swift in Sources */, C8297E3B1B6CF905000589EA /* String+extensions.swift in Sources */, C8297E3C1B6CF905000589EA /* SectionModel.swift in Sources */, + C8A74F771B94E5F400D8D046 /* ObserverBase.swift in Sources */, C8297E3D1B6CF905000589EA /* SearchViewModel.swift in Sources */, - C836ECCD1B8A7AA600AB941D /* _RXSwizzling.m in Sources */, - C836ECEB1B8A7AA600AB941D /* RxSearchBarDelegateProxy.swift in Sources */, + C8A74FFB1B94E5FE00D8D046 /* NSManagedObjectContext+Rx.swift in Sources */, + C8A74F321B94E5F400D8D046 /* TernaryDisposable.swift in Sources */, + C8A74F6B1B94E5F400D8D046 /* Observable+Debug.swift in Sources */, + C8A74F7E1B94E5F400D8D046 /* RxBox.swift in Sources */, + C8A74FF51B94E5FE00D8D046 /* RxTarget.swift in Sources */, C8297E3E1B6CF905000589EA /* DetailViewController.swift in Sources */, - C836ECD71B8A7AA600AB941D /* NSNotificationCenter+Rx.swift in Sources */, - C836ED001B8A7AA600AB941D /* UITextView+Rx.swift in Sources */, - C8C3DAF01B944DE4004D233E /* TailRecursiveSink.swift in Sources */, - C8C3DADE1B944DE3004D233E /* Observable+Binding.swift in Sources */, C8297E3F1B6CF905000589EA /* SectionModelType.swift in Sources */, - C8C3DAF61B944DE4004D233E /* Scheduler.swift in Sources */, + C8A74F431B94E5F400D8D046 /* Debug.swift in Sources */, + C8A74F8A1B94E5F400D8D046 /* BehaviorSubject.swift in Sources */, C8297E401B6CF905000589EA /* ImageService.swift in Sources */, - C8C3DADD1B944DE3004D233E /* Observable+Aggregate.swift in Sources */, - C836ECF41B8A7AA600AB941D /* UIControl+Rx.swift in Sources */, - C8C3DAB31B944DE3004D233E /* CombineLatest+arity.swift in Sources */, - C8C3DAAA1B944DE3004D233E /* Event.swift in Sources */, - C836ECFA1B8A7AA600AB941D /* UISearchBar+Rx.swift in Sources */, C8297E411B6CF905000589EA /* RxCollectionViewSectionedReloadDataSource.swift in Sources */, - C8C3DAE01B944DE3004D233E /* Observable+Creation.swift in Sources */, - C8C3DAF41B944DE4004D233E /* RxBox.swift in Sources */, - C836ECD31B8A7AA600AB941D /* Deallocating.swift in Sources */, - C8C3DB031B944DE4004D233E /* SubjectType.swift in Sources */, - C8C3DAB51B944DE3004D233E /* CombineLatest+CollectionType.swift in Sources */, - C8C3DA951B944DE3004D233E /* ConnectableObservableType.swift in Sources */, - C8C3DAD21B944DE3004D233E /* SubscribeOn.swift in Sources */, + C8A74FF11B94E5FE00D8D046 /* NSObject+Rx.swift in Sources */, C8297E421B6CF905000589EA /* WikipediaSearchResult.swift in Sources */, - C8C3DAE31B944DE4004D233E /* Observable+Single.swift in Sources */, - C8C3DAB61B944DE3004D233E /* CombineLatest.swift in Sources */, + C8A74F5C1B94E5F400D8D046 /* SubscribeOn.swift in Sources */, C8297E431B6CF905000589EA /* GitHubAPI.swift in Sources */, - C8C3DAD91B944DE3004D233E /* Zip+arity.swift in Sources */, - C8C3DAA31B944DE3004D233E /* ScheduledDisposable.swift in Sources */, - C8C3DACB1B944DE3004D233E /* Reduce.swift in Sources */, + C8A74F5E1B94E5F400D8D046 /* Take.swift in Sources */, + C8A7500A1B94E5FE00D8D046 /* UIButton+Rx.swift in Sources */, + C8A750181B94E5FE00D8D046 /* UITextView+Rx.swift in Sources */, + C8A74F7C1B94E5F400D8D046 /* ObserverType.swift in Sources */, + C8A74F3C1B94E5F400D8D046 /* Catch.swift in Sources */, + C8A750141B94E5FE00D8D046 /* UISlider+Rx.swift in Sources */, + C8A74FE31B94E5FE00D8D046 /* CLLocationManager+Rx.swift in Sources */, + C8A7500C1B94E5FE00D8D046 /* UIControl+Rx.swift in Sources */, C8297E441B6CF905000589EA /* PseudoRandomGenerator.swift in Sources */, - C8C3DAC21B944DE3004D233E /* Just.swift in Sources */, - C836ECD91B8A7AA600AB941D /* NSObject+Rx.swift in Sources */, - C836ECEE1B8A7AA600AB941D /* RxTextViewDelegateProxy.swift in Sources */, - C836ECE11B8A7AA600AB941D /* RxTableViewReactiveArrayDataSource.swift in Sources */, - C836ECFE1B8A7AA600AB941D /* UITableView+Rx.swift in Sources */, - C8C3DAC81B944DE3004D233E /* ObserveOnSerialDispatchQueue.swift in Sources */, - C836ECCC1B8A7AA600AB941D /* _RXKVOObserver.m in Sources */, + C8A74F8D1B94E5F400D8D046 /* SubjectType.swift in Sources */, + C8A750051B94E5FE00D8D046 /* RxTableViewDelegateProxy.swift in Sources */, C8297E451B6CF905000589EA /* SectionedViewType.swift in Sources */, - C8C3DAD31B944DE3004D233E /* Switch.swift in Sources */, + C8A74F461B94E5F400D8D046 /* DistinctUntilChanged.swift in Sources */, C8297E461B6CF905000589EA /* Example.swift in Sources */, - C8C3DA9E1B944DE3004D233E /* DisposeBag.swift in Sources */, - C8C3DA9A1B944DE3004D233E /* AnonymousDisposable.swift in Sources */, - C8C3DAC51B944DE3004D233E /* Multicast.swift in Sources */, - C836ECF91B8A7AA600AB941D /* UIScrollView+Rx.swift in Sources */, - C836ECDB1B8A7AA600AB941D /* RxCLLocationManagerDelegateProxy.swift in Sources */, + C8A74F3D1B94E5F400D8D046 /* CombineLatest+arity.swift in Sources */, + C8A74FEF1B94E5FE00D8D046 /* NSNotificationCenter+Rx.swift in Sources */, + C8A74F6C1B94E5F400D8D046 /* Observable+Multiple.swift in Sources */, + C8A750171B94E5FE00D8D046 /* UITextField+Rx.swift in Sources */, + C8A74FFA1B94E5FE00D8D046 /* ItemEvents.swift in Sources */, + C8A74F351B94E5F400D8D046 /* ImmediateScheduler.swift in Sources */, + C8A74F4F1B94E5F400D8D046 /* Multicast.swift in Sources */, + C8A74F5F1B94E5F400D8D046 /* TakeUntil.swift in Sources */, + C8A74F391B94E5F400D8D046 /* Amb.swift in Sources */, + C8A74FE81B94E5FE00D8D046 /* Logging.swift in Sources */, + C8A74F721B94E5F400D8D046 /* ObserverOf.swift in Sources */, + C8A74F6F1B94E5F400D8D046 /* Observable+Time.swift in Sources */, + C8A74F571B94E5F400D8D046 /* Sample.swift in Sources */, + C8A74F251B94E5F400D8D046 /* BinaryDisposable.swift in Sources */, + C8A7500E1B94E5FE00D8D046 /* UIGestureRecognizer+Rx.swift in Sources */, + C8A74F831B94E5F400D8D046 /* DispatchQueueSchedulerPriority.swift in Sources */, + C8A74F801B94E5F400D8D046 /* Scheduler.swift in Sources */, + C8A74F871B94E5F400D8D046 /* Scheduler+Extensions.swift in Sources */, + C8A74F681B94E5F400D8D046 /* Observable+Binding.swift in Sources */, C8297E471B6CF905000589EA /* ViewController.swift in Sources */, C8297E481B6CF905000589EA /* Differentiator.swift in Sources */, - C8C3DAEA1B944DE4004D233E /* AutoDetachObserver.swift in Sources */, C8297E491B6CF905000589EA /* WikipediaSearchCell.swift in Sources */, - C8C3DA971B944DE3004D233E /* InfiniteSequence.swift in Sources */, - C836ECE31B8A7AA600AB941D /* NSManagedObjectContext+Rx.swift in Sources */, + C8A74F691B94E5F400D8D046 /* Observable+Concurrency.swift in Sources */, + C8A74F521B94E5F400D8D046 /* ObserveOnSerialDispatchQueue.swift in Sources */, + C8A74F221B94E5F400D8D046 /* Queue.swift in Sources */, + C8A74FE51B94E5FE00D8D046 /* ControlProperty.swift in Sources */, + C8A7500D1B94E5FE00D8D046 /* UIDatePicker+Rx.swift in Sources */, + C8A74F401B94E5F400D8D046 /* CombineLatest.swift in Sources */, + C8A74F851B94E5F400D8D046 /* OperationQueueScheduler.swift in Sources */, C8297E4A1B6CF905000589EA /* GitHubSignupViewController.swift in Sources */, - C836ECFD1B8A7AA600AB941D /* UISwitch+Rx.swift in Sources */, - C8C3DAFF1B944DE4004D233E /* SerialDispatchQueueScheduler.swift in Sources */, - C8C3DAC71B944DE3004D233E /* ObserveOn.swift in Sources */, + C8A74F231B94E5F400D8D046 /* Disposable.swift in Sources */, + C8A74F1B1B94E5F400D8D046 /* AnyObject+Rx.swift in Sources */, + C8A74FE91B94E5FE00D8D046 /* Observable+CocoaExtensions.swift in Sources */, + C8A74F791B94E5F400D8D046 /* ScheduledObserver.swift in Sources */, + C8A750161B94E5FE00D8D046 /* UITableView+Rx.swift in Sources */, C8297E4B1B6CF905000589EA /* Random.xcdatamodeld in Sources */, - C836ECF21B8A7AA600AB941D /* UIButton+Rx.swift in Sources */, - C8C3DACA1B944DE3004D233E /* Producer.swift in Sources */, - C8C3DAFE1B944DE4004D233E /* SchedulerServices+Emulation.swift in Sources */, - C8C3DAA91B944DE3004D233E /* Error.swift in Sources */, - C8C3DAF71B944DE4004D233E /* ConcurrentDispatchQueueScheduler.swift in Sources */, + C8A750021B94E5FE00D8D046 /* RxScrollViewDelegateProxy.swift in Sources */, + C8A74FE11B94E5FE00D8D046 /* _RXKVOObserver.m in Sources */, C8297E4C1B6CF905000589EA /* APIWrappersViewController.swift in Sources */, + C8A74F551B94E5F400D8D046 /* Reduce.swift in Sources */, C8297E4D1B6CF905000589EA /* RxTableViewSectionedReloadDataSource.swift in Sources */, C8297E4E1B6CF905000589EA /* RxCollectionViewSectionedAnimatedDataSource.swift in Sources */, - C8C3DAAE1B944DE3004D233E /* Observable.swift in Sources */, - C8C3DABB1B944DE3004D233E /* DelaySubscription.swift in Sources */, - C8C3DA9F1B944DE3004D233E /* DisposeBase.swift in Sources */, - C8C3DAB21B944DE3004D233E /* Catch.swift in Sources */, - C8C3DADB1B944DE3004D233E /* Zip+CollectionType.swift in Sources */, - C8C3DAF81B944DE4004D233E /* CurrentThreadScheduler.swift in Sources */, - C8C3DAC61B944DE3004D233E /* Never.swift in Sources */, - C8C3DA911B944DE3004D233E /* AnyObject+Rx.swift in Sources */, - C8C3DAEE1B944DE4004D233E /* SafeObserver.swift in Sources */, - C836ECF01B8A7AA600AB941D /* UIAlertView+Rx.swift in Sources */, - C8C3DAFA1B944DE4004D233E /* MainScheduler.swift in Sources */, - C836ECCA1B8A7AA600AB941D /* _RX.m in Sources */, + C8A74F2A1B94E5F400D8D046 /* NAryDisposable.swift in Sources */, + C8A74F891B94E5F400D8D046 /* SerialDispatchQueueScheduler.swift in Sources */, + C8A74F501B94E5F400D8D046 /* Never.swift in Sources */, + C8A74F811B94E5F400D8D046 /* ConcurrentDispatchQueueScheduler.swift in Sources */, + C8A750011B94E5FE00D8D046 /* RxCollectionViewDelegateProxy.swift in Sources */, + C8A74F1E1B94E5F400D8D046 /* Lock.swift in Sources */, + C8A74F241B94E5F400D8D046 /* AnonymousDisposable.swift in Sources */, + C8A74F7A1B94E5F400D8D046 /* TailRecursiveSink.swift in Sources */, + C8A74F591B94E5F400D8D046 /* Sink.swift in Sources */, + C8A750131B94E5FE00D8D046 /* UISegmentedControl+Rx.swift in Sources */, + C8A74F601B94E5F400D8D046 /* TakeWhile.swift in Sources */, C8297E4F1B6CF905000589EA /* Wireframe.swift in Sources */, - C836ECD01B8A7AA600AB941D /* DelegateProxyType.swift in Sources */, + C8A74F291B94E5F400D8D046 /* DisposeBase.swift in Sources */, C8297E501B6CF905000589EA /* TableViewController.swift in Sources */, - C8C3DAD81B944DE3004D233E /* Timer.swift in Sources */, - C8C3DAD61B944DE3004D233E /* TakeWhile.swift in Sources */, - C836ECD81B8A7AA600AB941D /* NSObject+Rx+CoreGraphics.swift in Sources */, - C836ECEA1B8A7AA600AB941D /* RxScrollViewDelegateProxy.swift in Sources */, - C8C3DAE81B944DE4004D233E /* ObserverOf.swift in Sources */, - C836ECCF1B8A7AA600AB941D /* DelegateProxy.swift in Sources */, + C8A74F741B94E5F400D8D046 /* AutoDetachObserver.swift in Sources */, + C8A74F2C1B94E5F400D8D046 /* NopDisposable.swift in Sources */, + C8A74FE61B94E5FE00D8D046 /* DelegateProxy.swift in Sources */, C8297E511B6CF905000589EA /* PartialUpdatesViewController.swift in Sources */, - C8C3DAA51B944DE3004D233E /* SerialDisposable.swift in Sources */, - C8C3DAEC1B944DE4004D233E /* NopObserver.swift in Sources */, - C8C3DAFB1B944DE4004D233E /* OperationQueueScheduler.swift in Sources */, - C8C3DAE61B944DE4004D233E /* ObservableType.swift in Sources */, - C8C3DA921B944DE3004D233E /* Cancelable.swift in Sources */, + C8A74FEE1B94E5FE00D8D046 /* KVOObserver.swift in Sources */, + C8A74FFC1B94E5FE00D8D046 /* RxCollectionViewDataSourceType.swift in Sources */, + C8A750121B94E5FE00D8D046 /* UISearchBar+Rx.swift in Sources */, + C8A74F2E1B94E5F400D8D046 /* ScopedDispose.swift in Sources */, + C8A74F841B94E5F400D8D046 /* MainScheduler.swift in Sources */, C8297E521B6CF905000589EA /* Dependencies.swift in Sources */, - C8C3DA981B944DE3004D233E /* Queue.swift in Sources */, - C836ECF61B8A7AA600AB941D /* UIGestureRecognizer+Rx.swift in Sources */, + C8A74F881B94E5F400D8D046 /* SchedulerServices+Emulation.swift in Sources */, + C8A74F8B1B94E5F400D8D046 /* PublishSubject.swift in Sources */, + C8A74F781B94E5F400D8D046 /* SafeObserver.swift in Sources */, C8297E531B6CF905000589EA /* WikipediaAPI.swift in Sources */, C8297E541B6CF905000589EA /* AppDelegate.swift in Sources */, - C8C3DAE11B944DE4004D233E /* Observable+Debug.swift in Sources */, - C8C3DABE1B944DE3004D233E /* Empty.swift in Sources */, - C8C3DAD01B944DE3004D233E /* Skip.swift in Sources */, + C8A74F651B94E5F400D8D046 /* Zip+CollectionType.swift in Sources */, C8297E551B6CF905000589EA /* RxTableViewSectionedDataSource.swift in Sources */, - C836ECE61B8A7AA600AB941D /* RxActionSheetDelegateProxy.swift in Sources */, - C8C3DA9D1B944DE3004D233E /* CompositeDisposable.swift in Sources */, - C836ECFF1B8A7AA600AB941D /* UITextField+Rx.swift in Sources */, - C8C3DACD1B944DE3004D233E /* Sample.swift in Sources */, + C8A74F581B94E5F400D8D046 /* Scan.swift in Sources */, + C8A74F381B94E5F400D8D046 /* Observable.swift in Sources */, + C8A7500B1B94E5FE00D8D046 /* UICollectionView+Rx.swift in Sources */, + C8A74FFE1B94E5FE00D8D046 /* RxActionSheetDelegateProxy.swift in Sources */, + C8A74F411B94E5F400D8D046 /* Concat.swift in Sources */, + C8A74FF01B94E5FE00D8D046 /* NSObject+Rx+CoreGraphics.swift in Sources */, + C8A74FFD1B94E5FE00D8D046 /* RxTableViewDataSourceType.swift in Sources */, + C8A750071B94E5FE00D8D046 /* UIActionSheet+Rx.swift in Sources */, + C8A74F301B94E5F400D8D046 /* SingleAssignmentDisposable.swift in Sources */, + C8A74F5B1B94E5F400D8D046 /* StartWith.swift in Sources */, + C8A74F2F1B94E5F400D8D046 /* SerialDisposable.swift in Sources */, + C8A74F4D1B94E5F400D8D046 /* Map.swift in Sources */, C8297E561B6CF905000589EA /* WikipediaPage.swift in Sources */, + C8A74F7B1B94E5F400D8D046 /* ObserverType+Extensions.swift in Sources */, + C8A750111B94E5FE00D8D046 /* UIScrollView+Rx.swift in Sources */, + C8A74F3F1B94E5F400D8D046 /* CombineLatest+CollectionType.swift in Sources */, + C8A74FF21B94E5FE00D8D046 /* NSURLSession+Rx.swift in Sources */, + C8A74F471B94E5F400D8D046 /* Do.swift in Sources */, + C8A74F491B94E5F400D8D046 /* FailWith.swift in Sources */, C8297E571B6CF905000589EA /* Randomizer.swift in Sources */, - C8C3DAF11B944DE4004D233E /* ObserverType+Extensions.swift in Sources */, - C836ECE71B8A7AA600AB941D /* RxAlertViewDelegateProxy.swift in Sources */, - C836ECCE1B8A7AA600AB941D /* CLLocationManager+Rx.swift in Sources */, - C836ECE41B8A7AA600AB941D /* RxCollectionViewDataSourceType.swift in Sources */, - C8C3DAC41B944DE3004D233E /* Merge.swift in Sources */, - C8C3DAF31B944DE4004D233E /* Rx.swift in Sources */, - C836ECF31B8A7AA600AB941D /* UICollectionView+Rx.swift in Sources */, - C8C3DAAD1B944DE3004D233E /* Observable+Extensions.swift in Sources */, - C836ECFB1B8A7AA600AB941D /* UISegmentedControl+Rx.swift in Sources */, - C8C3DAFC1B944DE4004D233E /* RecursiveScheduler.swift in Sources */, - C836ECDA1B8A7AA600AB941D /* NSURLSession+Rx.swift in Sources */, - C8C3DACE1B944DE3004D233E /* Scan.swift in Sources */, - C8C3DAEF1B944DE4004D233E /* ScheduledObserver.swift in Sources */, + C8A74F1C1B94E5F400D8D046 /* Cancelable.swift in Sources */, C8297E581B6CF905000589EA /* User.swift in Sources */, - C8C3DADF1B944DE3004D233E /* Observable+Concurrency.swift in Sources */, - C8C3DAA21B944DE3004D233E /* NopDisposable.swift in Sources */, - C8C3DAB71B944DE3004D233E /* Concat.swift in Sources */, - C8C3DAED1B944DE4004D233E /* ObserverBase.swift in Sources */, - C8C3DAD51B944DE3004D233E /* TakeUntil.swift in Sources */, - C8C3DABD1B944DE3004D233E /* Do.swift in Sources */, - C836ECDD1B8A7AA600AB941D /* RxTarget.swift in Sources */, - C8C3DA931B944DE3004D233E /* AsyncLock.swift in Sources */, - C8C3DAF51B944DE4004D233E /* RxResult.swift in Sources */, - C836ECF11B8A7AA600AB941D /* UIBarButtonItem+Rx.swift in Sources */, - C8C3DAA71B944DE3004D233E /* StableCompositeDisposable.swift in Sources */, - C836ECF71B8A7AA600AB941D /* UIImageView+Rx.swift in Sources */, + C8A74F2D1B94E5F400D8D046 /* ScheduledDisposable.swift in Sources */, + C8A74FF81B94E5FE00D8D046 /* RxCollectionViewReactiveArrayDataSource.swift in Sources */, + C8A74FF31B94E5FE00D8D046 /* RxCLLocationManagerDelegateProxy.swift in Sources */, + C8A74F1F1B94E5F400D8D046 /* ConnectableObservableType.swift in Sources */, + C8A74F331B94E5F400D8D046 /* Error.swift in Sources */, + C8A750081B94E5FE00D8D046 /* UIAlertView+Rx.swift in Sources */, + C8A74F861B94E5F400D8D046 /* RecursiveScheduler.swift in Sources */, + C8A74F751B94E5F400D8D046 /* DoneObserver.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1568,6 +1593,7 @@ C88C78731B3EB0A00061C5AB /* SectionModel.swift in Sources */, C86E2F3F1AE5A0CA00C31024 /* SearchViewModel.swift in Sources */, C84B913D1B8A282000C9CCCF /* RxCollectionViewSectionedAnimatedDataSource.swift in Sources */, + C8A750201B94E78200D8D046 /* RxDataSourceStarterKit.swift in Sources */, 0706E1961B14AF5100BA2D3A /* DetailViewController.swift in Sources */, C88C78991B4012A90061C5AB /* SectionModelType.swift in Sources */, C83367251AD029AE00C668A7 /* ImageService.swift in Sources */, diff --git a/RxExample/RxExample/Examples/Introduction/IntroductionExampleViewController.swift b/RxExample/RxExample/Examples/Introduction/IntroductionExampleViewController.swift index 021d36ca..c63679f6 100644 --- a/RxExample/RxExample/Examples/Introduction/IntroductionExampleViewController.swift +++ b/RxExample/RxExample/Examples/Introduction/IntroductionExampleViewController.swift @@ -36,7 +36,7 @@ class IntroductionExampleViewController : ViewController { .map { (a, b) in return "\(a + b)" } - .subscribeTextOf(c) + .bindTo(c.rx_text) .addDisposableTo(disposeBag) // Also, tell it out loud diff --git a/RxExample/RxExample/Examples/PartialUpdates/PartialUpdatesViewController.swift b/RxExample/RxExample/Examples/PartialUpdates/PartialUpdatesViewController.swift index 7fbc2aac..2d8e8e24 100644 --- a/RxExample/RxExample/Examples/PartialUpdates/PartialUpdatesViewController.swift +++ b/RxExample/RxExample/Examples/PartialUpdates/PartialUpdatesViewController.swift @@ -128,11 +128,11 @@ class PartialUpdatesViewController : ViewController { .startWith(initialState) updates - .subscribe(partialUpdatesTableViewOutlet, withReactiveDataSource: tvAnimatedDataSource) + .bindTo(partialUpdatesTableViewOutlet.rx_itemsWithDataSource(tvAnimatedDataSource)) .addDisposableTo(disposeBag) self.sections - .subscribe(reloadTableViewOutlet, withReactiveDataSource: reloadDataSource) + .bindTo(reloadTableViewOutlet.rx_itemsWithDataSource(reloadDataSource)) .addDisposableTo(disposeBag) // Collection view logic works, but when clicking fast because of internal bugs @@ -147,18 +147,18 @@ class PartialUpdatesViewController : ViewController { // While `useAnimatedUpdateForCollectionView` is false, you can click as fast as // you want, table view doesn't seem to have same issues like collection view. - #if useAnimatedUpdateForCollectionView + #if useAnimatedUpdateForCollectionView let cvAnimatedDataSource = RxCollectionViewSectionedAnimatedDataSource() skinCollectionViewDataSource(cvAnimatedDataSource) updates - .partialUpdatesCollectionViewOutlet.rx_subscribeWithReactiveDataSource(cvAnimatedDataSource) - .disposeBag.addDisposable + .bindTo(partialUpdatesCollectionViewOutlet.rx_itemsWithDataSource(cvAnimatedDataSource)) + .addDisposableTo(disposeBag) #else let cvReloadDataSource = RxCollectionViewSectionedReloadDataSource() skinCollectionViewDataSource(cvReloadDataSource) self.sections - .subscribe(partialUpdatesCollectionViewOutlet, withReactiveDataSource: cvReloadDataSource) + .bindTo(partialUpdatesCollectionViewOutlet.rx_itemsWithDataSource(cvReloadDataSource)) .addDisposableTo(disposeBag) #endif diff --git a/RxExample/RxExample/Examples/TableView/DetailViewController.swift b/RxExample/RxExample/Examples/TableView/DetailViewController.swift index 4a2d9bda..36f4b31a 100644 --- a/RxExample/RxExample/Examples/TableView/DetailViewController.swift +++ b/RxExample/RxExample/Examples/TableView/DetailViewController.swift @@ -36,7 +36,7 @@ class DetailViewController: ViewController { UIImage(data: data) } .observeSingleOn($.mainScheduler) - .subscribeImageOf(imageView) + .subscribe(imageView.rx_image) .addDisposableTo(disposeBag) label.text = user.firstName + " " + user.lastName diff --git a/RxExample/RxExample/Examples/TableView/TableViewController.swift b/RxExample/RxExample/Examples/TableView/TableViewController.swift index 29fda8ab..7e2bd162 100644 --- a/RxExample/RxExample/Examples/TableView/TableViewController.swift +++ b/RxExample/RxExample/Examples/TableView/TableViewController.swift @@ -60,7 +60,7 @@ class TableViewController: ViewController, UITableViewDelegate { // reactive data source allUsers - .subscribe(tableView, withReactiveDataSource: dataSource) + .bindTo(tableView.rx_itemsWithDataSource(dataSource)) .addDisposableTo(disposeBag) // customization using delegate diff --git a/RxExample/RxExample/Examples/WikipediaImageSearch/Views/CollectionViewImageCell.swift b/RxExample/RxExample/Examples/WikipediaImageSearch/Views/CollectionViewImageCell.swift index 74f86e66..e39a1d2c 100644 --- a/RxExample/RxExample/Examples/WikipediaImageSearch/Views/CollectionViewImageCell.swift +++ b/RxExample/RxExample/Examples/WikipediaImageSearch/Views/CollectionViewImageCell.swift @@ -18,12 +18,12 @@ public class CollectionViewImageCell: UICollectionViewCell { var disposeBag: DisposeBag! - var image: Observable! { + var image: Observable! { didSet { let disposeBag = DisposeBag() self.image - .subscribeImageOf(imageOutlet, animated: true) + .subscribe(imageOutlet.rx_imageAnimated(true)) .addDisposableTo(disposeBag) self.disposeBag = disposeBag diff --git a/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchCell.swift b/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchCell.swift index 0eab701c..2c575591 100644 --- a/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchCell.swift +++ b/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchCell.swift @@ -34,20 +34,20 @@ public class WikipediaSearchCell: UITableViewCell { let disposeBag = DisposeBag() (viewModel?.title ?? just("")) - .subscribeTextOf(self.titleOutlet) + .subscribe(self.titleOutlet.rx_text) .addDisposableTo(disposeBag) self.URLOutlet.text = viewModel.searchResult.URL.absoluteString ?? "" viewModel.imageURLs - .subscribeItemsOf(self.imagesOutlet, withCellIdentifier: "ImageCell") { [unowned self] (_, URL, cell: CollectionViewImageCell) in + .bindTo(self.imagesOutlet.rx_itemsWithCellIdentifier("ImageCell")) { [unowned self] (_, URL, cell: CollectionViewImageCell) in let loadingPlaceholder: UIImage? = nil cell.image = self.imageService.imageFromURL(URL) .map { $0 as UIImage? } .catchErrorResumeNext(nil) .startWith(loadingPlaceholder) - } + } .addDisposableTo(disposeBag) self.disposeBag = disposeBag diff --git a/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchViewController.swift b/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchViewController.swift index 6e2b1c00..bcc556a5 100644 --- a/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchViewController.swift +++ b/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchViewController.swift @@ -33,17 +33,17 @@ class WikipediaSearchViewController: ViewController { resultsTableView.rowHeight = 194 - let selectedResult: Observable = resultsTableView.rx_modelSelected() + let selectedResult: Observable = resultsTableView.rx_modelSelected().asObservable() let viewModel = SearchViewModel( - searchText: searchBar.rx_searchText, + searchText: searchBar.rx_searchText.asObservable(), selectedResult: selectedResult ) // map table view rows // { viewModel.rows - .subscribeItemsOf(resultsTableView, withCellIdentifier: "WikipediaSearchCell") { (_, viewModel, cell: WikipediaSearchCell) in + .bindTo(resultsTableView.rx_itemsWithCellIdentifier("WikipediaSearchCell")) { (_, viewModel, cell: WikipediaSearchCell) in cell.viewModel = viewModel } .addDisposableTo(disposeBag) diff --git a/RxTests/RxCocoaTests/UIControl+RxTests.swift b/RxTests/RxCocoaTests/UIControl+RxTests.swift index e1fd892f..0b3d0725 100644 --- a/RxTests/RxCocoaTests/UIControl+RxTests.swift +++ b/RxTests/RxCocoaTests/UIControl+RxTests.swift @@ -15,7 +15,7 @@ class UIControlRxTests : RxTest { func testSubscribeEnabledToTrue() { let subject = UIControl() let enabledSequence = Variable(false) - let disposable = enabledSequence.subscribeEnabledOf(subject) + let disposable = enabledSequence.subscribe(subject.rx_enabled) enabledSequence.sendNext(true) XCTAssert(subject.enabled == true, "Expected enabled set to true") @@ -24,7 +24,7 @@ class UIControlRxTests : RxTest { func testSubscribeEnabledToFalse() { let subject = UIControl() let enabledSequence = Variable(true) - let disposable = enabledSequence.subscribeEnabledOf(subject) + let disposable = enabledSequence.subscribe(subject.rx_enabled) enabledSequence.sendNext(false) XCTAssert(subject.enabled == false, "Expected enabled set to false")