├── RxClassRoomStep1 ├── .idea │ ├── RxClassroom.iml │ ├── encodings.xml │ ├── misc.xml │ ├── modules.xml │ ├── vcs.xml │ ├── workspace.xml │ └── xcode.xml ├── Podfile ├── Podfile.lock ├── Pods │ ├── Action │ │ ├── Action.swift │ │ ├── AlertAction.swift │ │ ├── License.md │ │ ├── Readme.md │ │ ├── UIBarButtonItem+Action.swift │ │ └── UIButton+Rx.swift │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── Action.xcscheme │ │ │ ├── Pods-RxClassroom.xcscheme │ │ │ ├── RxCocoa.xcscheme │ │ │ ├── RxSwift.xcscheme │ │ │ └── xcschememanagement.plist │ ├── RxCocoa │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxCocoa │ │ │ ├── Common │ │ │ ├── CLLocationManager+Rx.swift │ │ │ ├── CocoaUnits │ │ │ │ ├── ControlEvent.swift │ │ │ │ ├── ControlProperty.swift │ │ │ │ ├── Driver │ │ │ │ │ ├── ControlEvent+Driver.swift │ │ │ │ │ ├── ControlProperty+Driver.swift │ │ │ │ │ ├── Driver+Operators+arity.swift │ │ │ │ │ ├── Driver+Operators.swift │ │ │ │ │ ├── Driver+Subscription.swift │ │ │ │ │ ├── Driver.swift │ │ │ │ │ ├── ObservableConvertibleType+Driver.swift │ │ │ │ │ └── Variable+Driver.swift │ │ │ │ └── UIBindingObserver.swift │ │ │ ├── DelegateProxy.swift │ │ │ ├── DelegateProxyType.swift │ │ │ ├── KVORepresentable+CoreGraphics.swift │ │ │ ├── KVORepresentable+Swift.swift │ │ │ ├── KVORepresentable.swift │ │ │ ├── Logging.swift │ │ │ ├── NSLayoutConstraint+Rx.swift │ │ │ ├── Observable+Bind.swift │ │ │ ├── Observables │ │ │ │ ├── Implementations │ │ │ │ │ ├── ControlTarget.swift │ │ │ │ │ ├── DeallocObservable.swift │ │ │ │ │ ├── KVOObservable.swift │ │ │ │ │ ├── KVOObserver.swift │ │ │ │ │ └── MessageSentObserver.swift │ │ │ │ ├── NSNotificationCenter+Rx.swift │ │ │ │ ├── NSObject+Rx+KVORepresentable.swift │ │ │ │ ├── NSObject+Rx+RawRepresentable.swift │ │ │ │ ├── NSObject+Rx.swift │ │ │ │ └── NSURLSession+Rx.swift │ │ │ ├── Proxies │ │ │ │ └── RxCLLocationManagerDelegateProxy.swift │ │ │ ├── Reactive.swift │ │ │ ├── RxCocoa.swift │ │ │ ├── RxTarget.swift │ │ │ ├── RxTextInput.swift │ │ │ ├── SectionedViewDataSourceType.swift │ │ │ ├── _RX.h │ │ │ ├── _RX.m │ │ │ ├── _RXDelegateProxy.h │ │ │ ├── _RXDelegateProxy.m │ │ │ ├── _RXKVOObserver.h │ │ │ ├── _RXKVOObserver.m │ │ │ ├── _RXObjCRuntime.h │ │ │ └── _RXObjCRuntime.m │ │ │ ├── RxCocoa.h │ │ │ └── iOS │ │ │ ├── DataSources │ │ │ ├── RxCollectionViewReactiveArrayDataSource.swift │ │ │ └── RxTableViewReactiveArrayDataSource.swift │ │ │ ├── Events │ │ │ └── ItemEvents.swift │ │ │ ├── NSTextStorage+Rx.swift │ │ │ ├── Protocols │ │ │ ├── RxCollectionViewDataSourceType.swift │ │ │ └── RxTableViewDataSourceType.swift │ │ │ ├── Proxies │ │ │ ├── RxCollectionViewDataSourceProxy.swift │ │ │ ├── RxCollectionViewDelegateProxy.swift │ │ │ ├── RxImagePickerDelegateProxy.swift │ │ │ ├── RxPickerViewDelegateProxy.swift │ │ │ ├── RxScrollViewDelegateProxy.swift │ │ │ ├── RxSearchBarDelegateProxy.swift │ │ │ ├── RxSearchControllerDelegateProxy.swift │ │ │ ├── RxTabBarDelegateProxy.swift │ │ │ ├── RxTableViewDataSourceProxy.swift │ │ │ ├── RxTableViewDelegateProxy.swift │ │ │ ├── RxTextStorageDelegateProxy.swift │ │ │ └── RxTextViewDelegateProxy.swift │ │ │ ├── UIActivityIndicatorView+Rx.swift │ │ │ ├── UIAlertAction+Rx.swift │ │ │ ├── UIApplication+Rx.swift │ │ │ ├── UIBarButtonItem+Rx.swift │ │ │ ├── UIButton+Rx.swift │ │ │ ├── UICollectionView+Rx.swift │ │ │ ├── UIControl+Rx.swift │ │ │ ├── UIDatePicker+Rx.swift │ │ │ ├── UIGestureRecognizer+Rx.swift │ │ │ ├── UIImagePickerController+Rx.swift │ │ │ ├── UIImageView+Rx.swift │ │ │ ├── UILabel+Rx.swift │ │ │ ├── UINavigationItem+Rx.swift │ │ │ ├── UIPageControl+Rx.swift │ │ │ ├── UIPickerView+Rx.swift │ │ │ ├── UIProgressView+Rx.swift │ │ │ ├── UIRefreshControl+Rx.swift │ │ │ ├── UIScrollView+Rx.swift │ │ │ ├── UISearchBar+Rx.swift │ │ │ ├── UISearchController+Rx.swift │ │ │ ├── UISegmentedControl+Rx.swift │ │ │ ├── UISlider+Rx.swift │ │ │ ├── UIStepper+Rx.swift │ │ │ ├── UISwitch+Rx.swift │ │ │ ├── UITabBar+Rx.swift │ │ │ ├── UITabBarItem+Rx.swift │ │ │ ├── UITableView+Rx.swift │ │ │ ├── UITextField+Rx.swift │ │ │ ├── UITextView+Rx.swift │ │ │ ├── UIView+Rx.swift │ │ │ └── UIViewController+Rx.swift │ ├── RxSwift │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxSwift │ │ │ ├── AnyObserver.swift │ │ │ ├── Cancelable.swift │ │ │ ├── Concurrency │ │ │ ├── AsyncLock.swift │ │ │ ├── Lock.swift │ │ │ ├── LockOwnerType.swift │ │ │ ├── SynchronizedDisposeType.swift │ │ │ ├── SynchronizedOnType.swift │ │ │ ├── SynchronizedSubscribeType.swift │ │ │ └── SynchronizedUnsubscribeType.swift │ │ │ ├── ConnectableObservableType.swift │ │ │ ├── DataStructures │ │ │ ├── Bag.swift │ │ │ ├── InfiniteSequence.swift │ │ │ ├── PriorityQueue.swift │ │ │ └── Queue.swift │ │ │ ├── Disposable.swift │ │ │ ├── Disposables │ │ │ ├── AnonymousDisposable.swift │ │ │ ├── BinaryDisposable.swift │ │ │ ├── BooleanDisposable.swift │ │ │ ├── CompositeDisposable.swift │ │ │ ├── DisposeBag.swift │ │ │ ├── DisposeBase.swift │ │ │ ├── NAryDisposable.swift │ │ │ ├── NopDisposable.swift │ │ │ ├── RefCountDisposable.swift │ │ │ ├── ScheduledDisposable.swift │ │ │ ├── SerialDisposable.swift │ │ │ ├── SingleAssignmentDisposable.swift │ │ │ ├── StableCompositeDisposable.swift │ │ │ └── SubscriptionDisposable.swift │ │ │ ├── Errors.swift │ │ │ ├── Event.swift │ │ │ ├── Extensions │ │ │ └── String+Rx.swift │ │ │ ├── ImmediateSchedulerType.swift │ │ │ ├── Observable+Extensions.swift │ │ │ ├── Observable.swift │ │ │ ├── ObservableConvertibleType.swift │ │ │ ├── ObservableType.swift │ │ │ ├── Observables │ │ │ ├── Implementations │ │ │ │ ├── AddRef.swift │ │ │ │ ├── Amb.swift │ │ │ │ ├── AnonymousObservable.swift │ │ │ │ ├── Buffer.swift │ │ │ │ ├── Catch.swift │ │ │ │ ├── CombineLatest+CollectionType.swift │ │ │ │ ├── CombineLatest+arity.swift │ │ │ │ ├── CombineLatest.swift │ │ │ │ ├── Concat.swift │ │ │ │ ├── ConnectableObservable.swift │ │ │ │ ├── Debug.swift │ │ │ │ ├── Deferred.swift │ │ │ │ ├── DelaySubscription.swift │ │ │ │ ├── DistinctUntilChanged.swift │ │ │ │ ├── Do.swift │ │ │ │ ├── ElementAt.swift │ │ │ │ ├── Empty.swift │ │ │ │ ├── Error.swift │ │ │ │ ├── Filter.swift │ │ │ │ ├── Generate.swift │ │ │ │ ├── Just.swift │ │ │ │ ├── Map.swift │ │ │ │ ├── Merge.swift │ │ │ │ ├── Multicast.swift │ │ │ │ ├── Never.swift │ │ │ │ ├── ObserveOn.swift │ │ │ │ ├── ObserveOnSerialDispatchQueue.swift │ │ │ │ ├── Producer.swift │ │ │ │ ├── Range.swift │ │ │ │ ├── Reduce.swift │ │ │ │ ├── RefCount.swift │ │ │ │ ├── Repeat.swift │ │ │ │ ├── RetryWhen.swift │ │ │ │ ├── Sample.swift │ │ │ │ ├── Scan.swift │ │ │ │ ├── Sequence.swift │ │ │ │ ├── ShareReplay1.swift │ │ │ │ ├── ShareReplay1WhileConnected.swift │ │ │ │ ├── SingleAsync.swift │ │ │ │ ├── Sink.swift │ │ │ │ ├── Skip.swift │ │ │ │ ├── SkipUntil.swift │ │ │ │ ├── SkipWhile.swift │ │ │ │ ├── StartWith.swift │ │ │ │ ├── SubscribeOn.swift │ │ │ │ ├── Switch.swift │ │ │ │ ├── Take.swift │ │ │ │ ├── TakeLast.swift │ │ │ │ ├── TakeUntil.swift │ │ │ │ ├── TakeWhile.swift │ │ │ │ ├── Throttle.swift │ │ │ │ ├── Timeout.swift │ │ │ │ ├── Timer.swift │ │ │ │ ├── ToArray.swift │ │ │ │ ├── Using.swift │ │ │ │ ├── Window.swift │ │ │ │ ├── WithLatestFrom.swift │ │ │ │ ├── Zip+CollectionType.swift │ │ │ │ ├── Zip+arity.swift │ │ │ │ └── Zip.swift │ │ │ ├── Observable+Aggregate.swift │ │ │ ├── Observable+Binding.swift │ │ │ ├── Observable+Concurrency.swift │ │ │ ├── Observable+Creation.swift │ │ │ ├── Observable+Debug.swift │ │ │ ├── Observable+Multiple.swift │ │ │ ├── Observable+Single.swift │ │ │ ├── Observable+StandardSequenceOperators.swift │ │ │ └── Observable+Time.swift │ │ │ ├── ObserverType.swift │ │ │ ├── Observers │ │ │ ├── AnonymousObserver.swift │ │ │ ├── ObserverBase.swift │ │ │ └── TailRecursiveSink.swift │ │ │ ├── Platform │ │ │ ├── Platform.Darwin.swift │ │ │ └── Platform.Linux.swift │ │ │ ├── Rx.swift │ │ │ ├── RxMutableBox.swift │ │ │ ├── SchedulerType.swift │ │ │ ├── Schedulers │ │ │ ├── ConcurrentDispatchQueueScheduler.swift │ │ │ ├── ConcurrentMainScheduler.swift │ │ │ ├── CurrentThreadScheduler.swift │ │ │ ├── DispatchQueueSchedulerQOS.swift │ │ │ ├── HistoricalScheduler.swift │ │ │ ├── HistoricalSchedulerTimeConverter.swift │ │ │ ├── ImmediateScheduler.swift │ │ │ ├── Internal │ │ │ │ ├── AnonymousInvocable.swift │ │ │ │ ├── InvocableScheduledItem.swift │ │ │ │ ├── InvocableType.swift │ │ │ │ ├── ScheduledItem.swift │ │ │ │ └── ScheduledItemType.swift │ │ │ ├── MainScheduler.swift │ │ │ ├── OperationQueueScheduler.swift │ │ │ ├── RecursiveScheduler.swift │ │ │ ├── SchedulerServices+Emulation.swift │ │ │ ├── SerialDispatchQueueScheduler.swift │ │ │ ├── VirtualTimeConverterType.swift │ │ │ └── VirtualTimeScheduler.swift │ │ │ └── Subjects │ │ │ ├── BehaviorSubject.swift │ │ │ ├── PublishSubject.swift │ │ │ ├── ReplaySubject.swift │ │ │ ├── SubjectType.swift │ │ │ └── Variable.swift │ └── Target Support Files │ │ ├── Action │ │ ├── Action-dummy.m │ │ ├── Action-prefix.pch │ │ ├── Action-umbrella.h │ │ ├── Action.modulemap │ │ ├── Action.xcconfig │ │ └── Info.plist │ │ ├── Pods-RxClassroom │ │ ├── Info.plist │ │ ├── Pods-RxClassroom-acknowledgements.markdown │ │ ├── Pods-RxClassroom-acknowledgements.plist │ │ ├── Pods-RxClassroom-dummy.m │ │ ├── Pods-RxClassroom-frameworks.sh │ │ ├── Pods-RxClassroom-resources.sh │ │ ├── Pods-RxClassroom-umbrella.h │ │ ├── Pods-RxClassroom.debug.xcconfig │ │ ├── Pods-RxClassroom.modulemap │ │ └── Pods-RxClassroom.release.xcconfig │ │ ├── RxCocoa │ │ ├── Info.plist │ │ ├── RxCocoa-dummy.m │ │ ├── RxCocoa-prefix.pch │ │ ├── RxCocoa-umbrella.h │ │ ├── RxCocoa.modulemap │ │ └── RxCocoa.xcconfig │ │ └── RxSwift │ │ ├── Info.plist │ │ ├── RxSwift-dummy.m │ │ ├── RxSwift-prefix.pch │ │ ├── RxSwift-umbrella.h │ │ ├── RxSwift.modulemap │ │ └── RxSwift.xcconfig ├── RxClassroom.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ ├── UserInterfaceState.xcuserstate │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── RxClassroom.xcscheme │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Info.plist │ ├── MainViewController.swift │ └── MainViewModel.swift └── RxClassroomTests │ ├── Info.plist │ └── RxClassroomTests.swift ├── RxClassRoomStep2 ├── .idea │ ├── RxClassroom.iml │ ├── encodings.xml │ ├── misc.xml │ ├── modules.xml │ ├── vcs.xml │ ├── workspace.xml │ └── xcode.xml ├── Podfile ├── Podfile.lock ├── Pods │ ├── Action │ │ ├── Action.swift │ │ ├── AlertAction.swift │ │ ├── License.md │ │ ├── Readme.md │ │ ├── UIBarButtonItem+Action.swift │ │ └── UIButton+Rx.swift │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── Action.xcscheme │ │ │ ├── Pods-RxClassroom.xcscheme │ │ │ ├── RxCocoa.xcscheme │ │ │ ├── RxSwift.xcscheme │ │ │ └── xcschememanagement.plist │ ├── RxCocoa │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxCocoa │ │ │ ├── Common │ │ │ ├── CLLocationManager+Rx.swift │ │ │ ├── CocoaUnits │ │ │ │ ├── ControlEvent.swift │ │ │ │ ├── ControlProperty.swift │ │ │ │ ├── Driver │ │ │ │ │ ├── ControlEvent+Driver.swift │ │ │ │ │ ├── ControlProperty+Driver.swift │ │ │ │ │ ├── Driver+Operators+arity.swift │ │ │ │ │ ├── Driver+Operators.swift │ │ │ │ │ ├── Driver+Subscription.swift │ │ │ │ │ ├── Driver.swift │ │ │ │ │ ├── ObservableConvertibleType+Driver.swift │ │ │ │ │ └── Variable+Driver.swift │ │ │ │ └── UIBindingObserver.swift │ │ │ ├── DelegateProxy.swift │ │ │ ├── DelegateProxyType.swift │ │ │ ├── KVORepresentable+CoreGraphics.swift │ │ │ ├── KVORepresentable+Swift.swift │ │ │ ├── KVORepresentable.swift │ │ │ ├── Logging.swift │ │ │ ├── NSLayoutConstraint+Rx.swift │ │ │ ├── Observable+Bind.swift │ │ │ ├── Observables │ │ │ │ ├── Implementations │ │ │ │ │ ├── ControlTarget.swift │ │ │ │ │ ├── DeallocObservable.swift │ │ │ │ │ ├── KVOObservable.swift │ │ │ │ │ ├── KVOObserver.swift │ │ │ │ │ └── MessageSentObserver.swift │ │ │ │ ├── NSNotificationCenter+Rx.swift │ │ │ │ ├── NSObject+Rx+KVORepresentable.swift │ │ │ │ ├── NSObject+Rx+RawRepresentable.swift │ │ │ │ ├── NSObject+Rx.swift │ │ │ │ └── NSURLSession+Rx.swift │ │ │ ├── Proxies │ │ │ │ └── RxCLLocationManagerDelegateProxy.swift │ │ │ ├── Reactive.swift │ │ │ ├── RxCocoa.swift │ │ │ ├── RxTarget.swift │ │ │ ├── RxTextInput.swift │ │ │ ├── SectionedViewDataSourceType.swift │ │ │ ├── _RX.h │ │ │ ├── _RX.m │ │ │ ├── _RXDelegateProxy.h │ │ │ ├── _RXDelegateProxy.m │ │ │ ├── _RXKVOObserver.h │ │ │ ├── _RXKVOObserver.m │ │ │ ├── _RXObjCRuntime.h │ │ │ └── _RXObjCRuntime.m │ │ │ ├── RxCocoa.h │ │ │ └── iOS │ │ │ ├── DataSources │ │ │ ├── RxCollectionViewReactiveArrayDataSource.swift │ │ │ └── RxTableViewReactiveArrayDataSource.swift │ │ │ ├── Events │ │ │ └── ItemEvents.swift │ │ │ ├── NSTextStorage+Rx.swift │ │ │ ├── Protocols │ │ │ ├── RxCollectionViewDataSourceType.swift │ │ │ └── RxTableViewDataSourceType.swift │ │ │ ├── Proxies │ │ │ ├── RxCollectionViewDataSourceProxy.swift │ │ │ ├── RxCollectionViewDelegateProxy.swift │ │ │ ├── RxImagePickerDelegateProxy.swift │ │ │ ├── RxPickerViewDelegateProxy.swift │ │ │ ├── RxScrollViewDelegateProxy.swift │ │ │ ├── RxSearchBarDelegateProxy.swift │ │ │ ├── RxSearchControllerDelegateProxy.swift │ │ │ ├── RxTabBarDelegateProxy.swift │ │ │ ├── RxTableViewDataSourceProxy.swift │ │ │ ├── RxTableViewDelegateProxy.swift │ │ │ ├── RxTextStorageDelegateProxy.swift │ │ │ └── RxTextViewDelegateProxy.swift │ │ │ ├── UIActivityIndicatorView+Rx.swift │ │ │ ├── UIAlertAction+Rx.swift │ │ │ ├── UIApplication+Rx.swift │ │ │ ├── UIBarButtonItem+Rx.swift │ │ │ ├── UIButton+Rx.swift │ │ │ ├── UICollectionView+Rx.swift │ │ │ ├── UIControl+Rx.swift │ │ │ ├── UIDatePicker+Rx.swift │ │ │ ├── UIGestureRecognizer+Rx.swift │ │ │ ├── UIImagePickerController+Rx.swift │ │ │ ├── UIImageView+Rx.swift │ │ │ ├── UILabel+Rx.swift │ │ │ ├── UINavigationItem+Rx.swift │ │ │ ├── UIPageControl+Rx.swift │ │ │ ├── UIPickerView+Rx.swift │ │ │ ├── UIProgressView+Rx.swift │ │ │ ├── UIRefreshControl+Rx.swift │ │ │ ├── UIScrollView+Rx.swift │ │ │ ├── UISearchBar+Rx.swift │ │ │ ├── UISearchController+Rx.swift │ │ │ ├── UISegmentedControl+Rx.swift │ │ │ ├── UISlider+Rx.swift │ │ │ ├── UIStepper+Rx.swift │ │ │ ├── UISwitch+Rx.swift │ │ │ ├── UITabBar+Rx.swift │ │ │ ├── UITabBarItem+Rx.swift │ │ │ ├── UITableView+Rx.swift │ │ │ ├── UITextField+Rx.swift │ │ │ ├── UITextView+Rx.swift │ │ │ ├── UIView+Rx.swift │ │ │ └── UIViewController+Rx.swift │ ├── RxSwift │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxSwift │ │ │ ├── AnyObserver.swift │ │ │ ├── Cancelable.swift │ │ │ ├── Concurrency │ │ │ ├── AsyncLock.swift │ │ │ ├── Lock.swift │ │ │ ├── LockOwnerType.swift │ │ │ ├── SynchronizedDisposeType.swift │ │ │ ├── SynchronizedOnType.swift │ │ │ ├── SynchronizedSubscribeType.swift │ │ │ └── SynchronizedUnsubscribeType.swift │ │ │ ├── ConnectableObservableType.swift │ │ │ ├── DataStructures │ │ │ ├── Bag.swift │ │ │ ├── InfiniteSequence.swift │ │ │ ├── PriorityQueue.swift │ │ │ └── Queue.swift │ │ │ ├── Disposable.swift │ │ │ ├── Disposables │ │ │ ├── AnonymousDisposable.swift │ │ │ ├── BinaryDisposable.swift │ │ │ ├── BooleanDisposable.swift │ │ │ ├── CompositeDisposable.swift │ │ │ ├── DisposeBag.swift │ │ │ ├── DisposeBase.swift │ │ │ ├── NAryDisposable.swift │ │ │ ├── NopDisposable.swift │ │ │ ├── RefCountDisposable.swift │ │ │ ├── ScheduledDisposable.swift │ │ │ ├── SerialDisposable.swift │ │ │ ├── SingleAssignmentDisposable.swift │ │ │ ├── StableCompositeDisposable.swift │ │ │ └── SubscriptionDisposable.swift │ │ │ ├── Errors.swift │ │ │ ├── Event.swift │ │ │ ├── Extensions │ │ │ └── String+Rx.swift │ │ │ ├── ImmediateSchedulerType.swift │ │ │ ├── Observable+Extensions.swift │ │ │ ├── Observable.swift │ │ │ ├── ObservableConvertibleType.swift │ │ │ ├── ObservableType.swift │ │ │ ├── Observables │ │ │ ├── Implementations │ │ │ │ ├── AddRef.swift │ │ │ │ ├── Amb.swift │ │ │ │ ├── AnonymousObservable.swift │ │ │ │ ├── Buffer.swift │ │ │ │ ├── Catch.swift │ │ │ │ ├── CombineLatest+CollectionType.swift │ │ │ │ ├── CombineLatest+arity.swift │ │ │ │ ├── CombineLatest.swift │ │ │ │ ├── Concat.swift │ │ │ │ ├── ConnectableObservable.swift │ │ │ │ ├── Debug.swift │ │ │ │ ├── Deferred.swift │ │ │ │ ├── DelaySubscription.swift │ │ │ │ ├── DistinctUntilChanged.swift │ │ │ │ ├── Do.swift │ │ │ │ ├── ElementAt.swift │ │ │ │ ├── Empty.swift │ │ │ │ ├── Error.swift │ │ │ │ ├── Filter.swift │ │ │ │ ├── Generate.swift │ │ │ │ ├── Just.swift │ │ │ │ ├── Map.swift │ │ │ │ ├── Merge.swift │ │ │ │ ├── Multicast.swift │ │ │ │ ├── Never.swift │ │ │ │ ├── ObserveOn.swift │ │ │ │ ├── ObserveOnSerialDispatchQueue.swift │ │ │ │ ├── Producer.swift │ │ │ │ ├── Range.swift │ │ │ │ ├── Reduce.swift │ │ │ │ ├── RefCount.swift │ │ │ │ ├── Repeat.swift │ │ │ │ ├── RetryWhen.swift │ │ │ │ ├── Sample.swift │ │ │ │ ├── Scan.swift │ │ │ │ ├── Sequence.swift │ │ │ │ ├── ShareReplay1.swift │ │ │ │ ├── ShareReplay1WhileConnected.swift │ │ │ │ ├── SingleAsync.swift │ │ │ │ ├── Sink.swift │ │ │ │ ├── Skip.swift │ │ │ │ ├── SkipUntil.swift │ │ │ │ ├── SkipWhile.swift │ │ │ │ ├── StartWith.swift │ │ │ │ ├── SubscribeOn.swift │ │ │ │ ├── Switch.swift │ │ │ │ ├── Take.swift │ │ │ │ ├── TakeLast.swift │ │ │ │ ├── TakeUntil.swift │ │ │ │ ├── TakeWhile.swift │ │ │ │ ├── Throttle.swift │ │ │ │ ├── Timeout.swift │ │ │ │ ├── Timer.swift │ │ │ │ ├── ToArray.swift │ │ │ │ ├── Using.swift │ │ │ │ ├── Window.swift │ │ │ │ ├── WithLatestFrom.swift │ │ │ │ ├── Zip+CollectionType.swift │ │ │ │ ├── Zip+arity.swift │ │ │ │ └── Zip.swift │ │ │ ├── Observable+Aggregate.swift │ │ │ ├── Observable+Binding.swift │ │ │ ├── Observable+Concurrency.swift │ │ │ ├── Observable+Creation.swift │ │ │ ├── Observable+Debug.swift │ │ │ ├── Observable+Multiple.swift │ │ │ ├── Observable+Single.swift │ │ │ ├── Observable+StandardSequenceOperators.swift │ │ │ └── Observable+Time.swift │ │ │ ├── ObserverType.swift │ │ │ ├── Observers │ │ │ ├── AnonymousObserver.swift │ │ │ ├── ObserverBase.swift │ │ │ └── TailRecursiveSink.swift │ │ │ ├── Platform │ │ │ ├── Platform.Darwin.swift │ │ │ └── Platform.Linux.swift │ │ │ ├── Rx.swift │ │ │ ├── RxMutableBox.swift │ │ │ ├── SchedulerType.swift │ │ │ ├── Schedulers │ │ │ ├── ConcurrentDispatchQueueScheduler.swift │ │ │ ├── ConcurrentMainScheduler.swift │ │ │ ├── CurrentThreadScheduler.swift │ │ │ ├── DispatchQueueSchedulerQOS.swift │ │ │ ├── HistoricalScheduler.swift │ │ │ ├── HistoricalSchedulerTimeConverter.swift │ │ │ ├── ImmediateScheduler.swift │ │ │ ├── Internal │ │ │ │ ├── AnonymousInvocable.swift │ │ │ │ ├── InvocableScheduledItem.swift │ │ │ │ ├── InvocableType.swift │ │ │ │ ├── ScheduledItem.swift │ │ │ │ └── ScheduledItemType.swift │ │ │ ├── MainScheduler.swift │ │ │ ├── OperationQueueScheduler.swift │ │ │ ├── RecursiveScheduler.swift │ │ │ ├── SchedulerServices+Emulation.swift │ │ │ ├── SerialDispatchQueueScheduler.swift │ │ │ ├── VirtualTimeConverterType.swift │ │ │ └── VirtualTimeScheduler.swift │ │ │ └── Subjects │ │ │ ├── BehaviorSubject.swift │ │ │ ├── PublishSubject.swift │ │ │ ├── ReplaySubject.swift │ │ │ ├── SubjectType.swift │ │ │ └── Variable.swift │ └── Target Support Files │ │ ├── Action │ │ ├── Action-dummy.m │ │ ├── Action-prefix.pch │ │ ├── Action-umbrella.h │ │ ├── Action.modulemap │ │ ├── Action.xcconfig │ │ └── Info.plist │ │ ├── Pods-RxClassroom │ │ ├── Info.plist │ │ ├── Pods-RxClassroom-acknowledgements.markdown │ │ ├── Pods-RxClassroom-acknowledgements.plist │ │ ├── Pods-RxClassroom-dummy.m │ │ ├── Pods-RxClassroom-frameworks.sh │ │ ├── Pods-RxClassroom-resources.sh │ │ ├── Pods-RxClassroom-umbrella.h │ │ ├── Pods-RxClassroom.debug.xcconfig │ │ ├── Pods-RxClassroom.modulemap │ │ └── Pods-RxClassroom.release.xcconfig │ │ ├── RxCocoa │ │ ├── Info.plist │ │ ├── RxCocoa-dummy.m │ │ ├── RxCocoa-prefix.pch │ │ ├── RxCocoa-umbrella.h │ │ ├── RxCocoa.modulemap │ │ └── RxCocoa.xcconfig │ │ └── RxSwift │ │ ├── Info.plist │ │ ├── RxSwift-dummy.m │ │ ├── RxSwift-prefix.pch │ │ ├── RxSwift-umbrella.h │ │ ├── RxSwift.modulemap │ │ └── RxSwift.xcconfig ├── RxClassroom.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ ├── UserInterfaceState.xcuserstate │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── RxClassroom.xcscheme │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Info.plist │ ├── MainViewController.swift │ └── MainViewModel.swift └── RxClassroomTests │ ├── Info.plist │ └── RxClassroomTests.swift ├── RxClassRoomStep3 ├── .idea │ ├── RxClassroom.iml │ ├── encodings.xml │ ├── misc.xml │ ├── modules.xml │ ├── vcs.xml │ ├── workspace.xml │ └── xcode.xml ├── Podfile ├── Podfile.lock ├── Pods │ ├── Action │ │ ├── Action.swift │ │ ├── AlertAction.swift │ │ ├── License.md │ │ ├── Readme.md │ │ ├── UIBarButtonItem+Action.swift │ │ └── UIButton+Rx.swift │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── Action.xcscheme │ │ │ ├── Pods-RxClassroom.xcscheme │ │ │ ├── RxCocoa.xcscheme │ │ │ ├── RxSwift.xcscheme │ │ │ └── xcschememanagement.plist │ ├── RxCocoa │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxCocoa │ │ │ ├── Common │ │ │ ├── CLLocationManager+Rx.swift │ │ │ ├── CocoaUnits │ │ │ │ ├── ControlEvent.swift │ │ │ │ ├── ControlProperty.swift │ │ │ │ ├── Driver │ │ │ │ │ ├── ControlEvent+Driver.swift │ │ │ │ │ ├── ControlProperty+Driver.swift │ │ │ │ │ ├── Driver+Operators+arity.swift │ │ │ │ │ ├── Driver+Operators.swift │ │ │ │ │ ├── Driver+Subscription.swift │ │ │ │ │ ├── Driver.swift │ │ │ │ │ ├── ObservableConvertibleType+Driver.swift │ │ │ │ │ └── Variable+Driver.swift │ │ │ │ └── UIBindingObserver.swift │ │ │ ├── DelegateProxy.swift │ │ │ ├── DelegateProxyType.swift │ │ │ ├── KVORepresentable+CoreGraphics.swift │ │ │ ├── KVORepresentable+Swift.swift │ │ │ ├── KVORepresentable.swift │ │ │ ├── Logging.swift │ │ │ ├── NSLayoutConstraint+Rx.swift │ │ │ ├── Observable+Bind.swift │ │ │ ├── Observables │ │ │ │ ├── Implementations │ │ │ │ │ ├── ControlTarget.swift │ │ │ │ │ ├── DeallocObservable.swift │ │ │ │ │ ├── KVOObservable.swift │ │ │ │ │ ├── KVOObserver.swift │ │ │ │ │ └── MessageSentObserver.swift │ │ │ │ ├── NSNotificationCenter+Rx.swift │ │ │ │ ├── NSObject+Rx+KVORepresentable.swift │ │ │ │ ├── NSObject+Rx+RawRepresentable.swift │ │ │ │ ├── NSObject+Rx.swift │ │ │ │ └── NSURLSession+Rx.swift │ │ │ ├── Proxies │ │ │ │ └── RxCLLocationManagerDelegateProxy.swift │ │ │ ├── Reactive.swift │ │ │ ├── RxCocoa.swift │ │ │ ├── RxTarget.swift │ │ │ ├── RxTextInput.swift │ │ │ ├── SectionedViewDataSourceType.swift │ │ │ ├── _RX.h │ │ │ ├── _RX.m │ │ │ ├── _RXDelegateProxy.h │ │ │ ├── _RXDelegateProxy.m │ │ │ ├── _RXKVOObserver.h │ │ │ ├── _RXKVOObserver.m │ │ │ ├── _RXObjCRuntime.h │ │ │ └── _RXObjCRuntime.m │ │ │ ├── RxCocoa.h │ │ │ └── iOS │ │ │ ├── DataSources │ │ │ ├── RxCollectionViewReactiveArrayDataSource.swift │ │ │ └── RxTableViewReactiveArrayDataSource.swift │ │ │ ├── Events │ │ │ └── ItemEvents.swift │ │ │ ├── NSTextStorage+Rx.swift │ │ │ ├── Protocols │ │ │ ├── RxCollectionViewDataSourceType.swift │ │ │ └── RxTableViewDataSourceType.swift │ │ │ ├── Proxies │ │ │ ├── RxCollectionViewDataSourceProxy.swift │ │ │ ├── RxCollectionViewDelegateProxy.swift │ │ │ ├── RxImagePickerDelegateProxy.swift │ │ │ ├── RxPickerViewDelegateProxy.swift │ │ │ ├── RxScrollViewDelegateProxy.swift │ │ │ ├── RxSearchBarDelegateProxy.swift │ │ │ ├── RxSearchControllerDelegateProxy.swift │ │ │ ├── RxTabBarDelegateProxy.swift │ │ │ ├── RxTableViewDataSourceProxy.swift │ │ │ ├── RxTableViewDelegateProxy.swift │ │ │ ├── RxTextStorageDelegateProxy.swift │ │ │ └── RxTextViewDelegateProxy.swift │ │ │ ├── UIActivityIndicatorView+Rx.swift │ │ │ ├── UIAlertAction+Rx.swift │ │ │ ├── UIApplication+Rx.swift │ │ │ ├── UIBarButtonItem+Rx.swift │ │ │ ├── UIButton+Rx.swift │ │ │ ├── UICollectionView+Rx.swift │ │ │ ├── UIControl+Rx.swift │ │ │ ├── UIDatePicker+Rx.swift │ │ │ ├── UIGestureRecognizer+Rx.swift │ │ │ ├── UIImagePickerController+Rx.swift │ │ │ ├── UIImageView+Rx.swift │ │ │ ├── UILabel+Rx.swift │ │ │ ├── UINavigationItem+Rx.swift │ │ │ ├── UIPageControl+Rx.swift │ │ │ ├── UIPickerView+Rx.swift │ │ │ ├── UIProgressView+Rx.swift │ │ │ ├── UIRefreshControl+Rx.swift │ │ │ ├── UIScrollView+Rx.swift │ │ │ ├── UISearchBar+Rx.swift │ │ │ ├── UISearchController+Rx.swift │ │ │ ├── UISegmentedControl+Rx.swift │ │ │ ├── UISlider+Rx.swift │ │ │ ├── UIStepper+Rx.swift │ │ │ ├── UISwitch+Rx.swift │ │ │ ├── UITabBar+Rx.swift │ │ │ ├── UITabBarItem+Rx.swift │ │ │ ├── UITableView+Rx.swift │ │ │ ├── UITextField+Rx.swift │ │ │ ├── UITextView+Rx.swift │ │ │ ├── UIView+Rx.swift │ │ │ └── UIViewController+Rx.swift │ ├── RxSwift │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxSwift │ │ │ ├── AnyObserver.swift │ │ │ ├── Cancelable.swift │ │ │ ├── Concurrency │ │ │ ├── AsyncLock.swift │ │ │ ├── Lock.swift │ │ │ ├── LockOwnerType.swift │ │ │ ├── SynchronizedDisposeType.swift │ │ │ ├── SynchronizedOnType.swift │ │ │ ├── SynchronizedSubscribeType.swift │ │ │ └── SynchronizedUnsubscribeType.swift │ │ │ ├── ConnectableObservableType.swift │ │ │ ├── DataStructures │ │ │ ├── Bag.swift │ │ │ ├── InfiniteSequence.swift │ │ │ ├── PriorityQueue.swift │ │ │ └── Queue.swift │ │ │ ├── Disposable.swift │ │ │ ├── Disposables │ │ │ ├── AnonymousDisposable.swift │ │ │ ├── BinaryDisposable.swift │ │ │ ├── BooleanDisposable.swift │ │ │ ├── CompositeDisposable.swift │ │ │ ├── DisposeBag.swift │ │ │ ├── DisposeBase.swift │ │ │ ├── NAryDisposable.swift │ │ │ ├── NopDisposable.swift │ │ │ ├── RefCountDisposable.swift │ │ │ ├── ScheduledDisposable.swift │ │ │ ├── SerialDisposable.swift │ │ │ ├── SingleAssignmentDisposable.swift │ │ │ ├── StableCompositeDisposable.swift │ │ │ └── SubscriptionDisposable.swift │ │ │ ├── Errors.swift │ │ │ ├── Event.swift │ │ │ ├── Extensions │ │ │ └── String+Rx.swift │ │ │ ├── ImmediateSchedulerType.swift │ │ │ ├── Observable+Extensions.swift │ │ │ ├── Observable.swift │ │ │ ├── ObservableConvertibleType.swift │ │ │ ├── ObservableType.swift │ │ │ ├── Observables │ │ │ ├── Implementations │ │ │ │ ├── AddRef.swift │ │ │ │ ├── Amb.swift │ │ │ │ ├── AnonymousObservable.swift │ │ │ │ ├── Buffer.swift │ │ │ │ ├── Catch.swift │ │ │ │ ├── CombineLatest+CollectionType.swift │ │ │ │ ├── CombineLatest+arity.swift │ │ │ │ ├── CombineLatest.swift │ │ │ │ ├── Concat.swift │ │ │ │ ├── ConnectableObservable.swift │ │ │ │ ├── Debug.swift │ │ │ │ ├── Deferred.swift │ │ │ │ ├── DelaySubscription.swift │ │ │ │ ├── DistinctUntilChanged.swift │ │ │ │ ├── Do.swift │ │ │ │ ├── ElementAt.swift │ │ │ │ ├── Empty.swift │ │ │ │ ├── Error.swift │ │ │ │ ├── Filter.swift │ │ │ │ ├── Generate.swift │ │ │ │ ├── Just.swift │ │ │ │ ├── Map.swift │ │ │ │ ├── Merge.swift │ │ │ │ ├── Multicast.swift │ │ │ │ ├── Never.swift │ │ │ │ ├── ObserveOn.swift │ │ │ │ ├── ObserveOnSerialDispatchQueue.swift │ │ │ │ ├── Producer.swift │ │ │ │ ├── Range.swift │ │ │ │ ├── Reduce.swift │ │ │ │ ├── RefCount.swift │ │ │ │ ├── Repeat.swift │ │ │ │ ├── RetryWhen.swift │ │ │ │ ├── Sample.swift │ │ │ │ ├── Scan.swift │ │ │ │ ├── Sequence.swift │ │ │ │ ├── ShareReplay1.swift │ │ │ │ ├── ShareReplay1WhileConnected.swift │ │ │ │ ├── SingleAsync.swift │ │ │ │ ├── Sink.swift │ │ │ │ ├── Skip.swift │ │ │ │ ├── SkipUntil.swift │ │ │ │ ├── SkipWhile.swift │ │ │ │ ├── StartWith.swift │ │ │ │ ├── SubscribeOn.swift │ │ │ │ ├── Switch.swift │ │ │ │ ├── Take.swift │ │ │ │ ├── TakeLast.swift │ │ │ │ ├── TakeUntil.swift │ │ │ │ ├── TakeWhile.swift │ │ │ │ ├── Throttle.swift │ │ │ │ ├── Timeout.swift │ │ │ │ ├── Timer.swift │ │ │ │ ├── ToArray.swift │ │ │ │ ├── Using.swift │ │ │ │ ├── Window.swift │ │ │ │ ├── WithLatestFrom.swift │ │ │ │ ├── Zip+CollectionType.swift │ │ │ │ ├── Zip+arity.swift │ │ │ │ └── Zip.swift │ │ │ ├── Observable+Aggregate.swift │ │ │ ├── Observable+Binding.swift │ │ │ ├── Observable+Concurrency.swift │ │ │ ├── Observable+Creation.swift │ │ │ ├── Observable+Debug.swift │ │ │ ├── Observable+Multiple.swift │ │ │ ├── Observable+Single.swift │ │ │ ├── Observable+StandardSequenceOperators.swift │ │ │ └── Observable+Time.swift │ │ │ ├── ObserverType.swift │ │ │ ├── Observers │ │ │ ├── AnonymousObserver.swift │ │ │ ├── ObserverBase.swift │ │ │ └── TailRecursiveSink.swift │ │ │ ├── Platform │ │ │ ├── Platform.Darwin.swift │ │ │ └── Platform.Linux.swift │ │ │ ├── Rx.swift │ │ │ ├── RxMutableBox.swift │ │ │ ├── SchedulerType.swift │ │ │ ├── Schedulers │ │ │ ├── ConcurrentDispatchQueueScheduler.swift │ │ │ ├── ConcurrentMainScheduler.swift │ │ │ ├── CurrentThreadScheduler.swift │ │ │ ├── DispatchQueueSchedulerQOS.swift │ │ │ ├── HistoricalScheduler.swift │ │ │ ├── HistoricalSchedulerTimeConverter.swift │ │ │ ├── ImmediateScheduler.swift │ │ │ ├── Internal │ │ │ │ ├── AnonymousInvocable.swift │ │ │ │ ├── InvocableScheduledItem.swift │ │ │ │ ├── InvocableType.swift │ │ │ │ ├── ScheduledItem.swift │ │ │ │ └── ScheduledItemType.swift │ │ │ ├── MainScheduler.swift │ │ │ ├── OperationQueueScheduler.swift │ │ │ ├── RecursiveScheduler.swift │ │ │ ├── SchedulerServices+Emulation.swift │ │ │ ├── SerialDispatchQueueScheduler.swift │ │ │ ├── VirtualTimeConverterType.swift │ │ │ └── VirtualTimeScheduler.swift │ │ │ └── Subjects │ │ │ ├── BehaviorSubject.swift │ │ │ ├── PublishSubject.swift │ │ │ ├── ReplaySubject.swift │ │ │ ├── SubjectType.swift │ │ │ └── Variable.swift │ └── Target Support Files │ │ ├── Action │ │ ├── Action-dummy.m │ │ ├── Action-prefix.pch │ │ ├── Action-umbrella.h │ │ ├── Action.modulemap │ │ ├── Action.xcconfig │ │ └── Info.plist │ │ ├── Pods-RxClassroom │ │ ├── Info.plist │ │ ├── Pods-RxClassroom-acknowledgements.markdown │ │ ├── Pods-RxClassroom-acknowledgements.plist │ │ ├── Pods-RxClassroom-dummy.m │ │ ├── Pods-RxClassroom-frameworks.sh │ │ ├── Pods-RxClassroom-resources.sh │ │ ├── Pods-RxClassroom-umbrella.h │ │ ├── Pods-RxClassroom.debug.xcconfig │ │ ├── Pods-RxClassroom.modulemap │ │ └── Pods-RxClassroom.release.xcconfig │ │ ├── RxCocoa │ │ ├── Info.plist │ │ ├── RxCocoa-dummy.m │ │ ├── RxCocoa-prefix.pch │ │ ├── RxCocoa-umbrella.h │ │ ├── RxCocoa.modulemap │ │ └── RxCocoa.xcconfig │ │ └── RxSwift │ │ ├── Info.plist │ │ ├── RxSwift-dummy.m │ │ ├── RxSwift-prefix.pch │ │ ├── RxSwift-umbrella.h │ │ ├── RxSwift.modulemap │ │ └── RxSwift.xcconfig ├── RxClassroom.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ ├── UserInterfaceState.xcuserstate │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── RxClassroom.xcscheme │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Info.plist │ ├── MainViewController.swift │ └── MainViewModel.swift └── RxClassroomTests │ ├── Info.plist │ └── RxClassroomTests.swift ├── RxClassRoomStep4 ├── .DS_Store ├── .idea │ ├── RxClassroom.iml │ ├── encodings.xml │ ├── misc.xml │ ├── modules.xml │ ├── vcs.xml │ ├── workspace.xml │ └── xcode.xml ├── Podfile ├── Podfile.lock ├── Pods │ ├── Action │ │ ├── Action.swift │ │ ├── AlertAction.swift │ │ ├── License.md │ │ ├── Readme.md │ │ ├── UIBarButtonItem+Action.swift │ │ └── UIButton+Rx.swift │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── Action.xcscheme │ │ │ ├── Pods-RxClassroom.xcscheme │ │ │ ├── RxCocoa.xcscheme │ │ │ ├── RxSwift.xcscheme │ │ │ └── xcschememanagement.plist │ ├── RxCocoa │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxCocoa │ │ │ ├── Common │ │ │ ├── CLLocationManager+Rx.swift │ │ │ ├── CocoaUnits │ │ │ │ ├── ControlEvent.swift │ │ │ │ ├── ControlProperty.swift │ │ │ │ ├── Driver │ │ │ │ │ ├── ControlEvent+Driver.swift │ │ │ │ │ ├── ControlProperty+Driver.swift │ │ │ │ │ ├── Driver+Operators+arity.swift │ │ │ │ │ ├── Driver+Operators.swift │ │ │ │ │ ├── Driver+Subscription.swift │ │ │ │ │ ├── Driver.swift │ │ │ │ │ ├── ObservableConvertibleType+Driver.swift │ │ │ │ │ └── Variable+Driver.swift │ │ │ │ └── UIBindingObserver.swift │ │ │ ├── DelegateProxy.swift │ │ │ ├── DelegateProxyType.swift │ │ │ ├── KVORepresentable+CoreGraphics.swift │ │ │ ├── KVORepresentable+Swift.swift │ │ │ ├── KVORepresentable.swift │ │ │ ├── Logging.swift │ │ │ ├── NSLayoutConstraint+Rx.swift │ │ │ ├── Observable+Bind.swift │ │ │ ├── Observables │ │ │ │ ├── Implementations │ │ │ │ │ ├── ControlTarget.swift │ │ │ │ │ ├── DeallocObservable.swift │ │ │ │ │ ├── KVOObservable.swift │ │ │ │ │ ├── KVOObserver.swift │ │ │ │ │ └── MessageSentObserver.swift │ │ │ │ ├── NSNotificationCenter+Rx.swift │ │ │ │ ├── NSObject+Rx+KVORepresentable.swift │ │ │ │ ├── NSObject+Rx+RawRepresentable.swift │ │ │ │ ├── NSObject+Rx.swift │ │ │ │ └── NSURLSession+Rx.swift │ │ │ ├── Proxies │ │ │ │ └── RxCLLocationManagerDelegateProxy.swift │ │ │ ├── Reactive.swift │ │ │ ├── RxCocoa.swift │ │ │ ├── RxTarget.swift │ │ │ ├── RxTextInput.swift │ │ │ ├── SectionedViewDataSourceType.swift │ │ │ ├── _RX.h │ │ │ ├── _RX.m │ │ │ ├── _RXDelegateProxy.h │ │ │ ├── _RXDelegateProxy.m │ │ │ ├── _RXKVOObserver.h │ │ │ ├── _RXKVOObserver.m │ │ │ ├── _RXObjCRuntime.h │ │ │ └── _RXObjCRuntime.m │ │ │ ├── RxCocoa.h │ │ │ └── iOS │ │ │ ├── DataSources │ │ │ ├── RxCollectionViewReactiveArrayDataSource.swift │ │ │ └── RxTableViewReactiveArrayDataSource.swift │ │ │ ├── Events │ │ │ └── ItemEvents.swift │ │ │ ├── NSTextStorage+Rx.swift │ │ │ ├── Protocols │ │ │ ├── RxCollectionViewDataSourceType.swift │ │ │ └── RxTableViewDataSourceType.swift │ │ │ ├── Proxies │ │ │ ├── RxCollectionViewDataSourceProxy.swift │ │ │ ├── RxCollectionViewDelegateProxy.swift │ │ │ ├── RxImagePickerDelegateProxy.swift │ │ │ ├── RxPickerViewDelegateProxy.swift │ │ │ ├── RxScrollViewDelegateProxy.swift │ │ │ ├── RxSearchBarDelegateProxy.swift │ │ │ ├── RxSearchControllerDelegateProxy.swift │ │ │ ├── RxTabBarDelegateProxy.swift │ │ │ ├── RxTableViewDataSourceProxy.swift │ │ │ ├── RxTableViewDelegateProxy.swift │ │ │ ├── RxTextStorageDelegateProxy.swift │ │ │ └── RxTextViewDelegateProxy.swift │ │ │ ├── UIActivityIndicatorView+Rx.swift │ │ │ ├── UIAlertAction+Rx.swift │ │ │ ├── UIApplication+Rx.swift │ │ │ ├── UIBarButtonItem+Rx.swift │ │ │ ├── UIButton+Rx.swift │ │ │ ├── UICollectionView+Rx.swift │ │ │ ├── UIControl+Rx.swift │ │ │ ├── UIDatePicker+Rx.swift │ │ │ ├── UIGestureRecognizer+Rx.swift │ │ │ ├── UIImagePickerController+Rx.swift │ │ │ ├── UIImageView+Rx.swift │ │ │ ├── UILabel+Rx.swift │ │ │ ├── UINavigationItem+Rx.swift │ │ │ ├── UIPageControl+Rx.swift │ │ │ ├── UIPickerView+Rx.swift │ │ │ ├── UIProgressView+Rx.swift │ │ │ ├── UIRefreshControl+Rx.swift │ │ │ ├── UIScrollView+Rx.swift │ │ │ ├── UISearchBar+Rx.swift │ │ │ ├── UISearchController+Rx.swift │ │ │ ├── UISegmentedControl+Rx.swift │ │ │ ├── UISlider+Rx.swift │ │ │ ├── UIStepper+Rx.swift │ │ │ ├── UISwitch+Rx.swift │ │ │ ├── UITabBar+Rx.swift │ │ │ ├── UITabBarItem+Rx.swift │ │ │ ├── UITableView+Rx.swift │ │ │ ├── UITextField+Rx.swift │ │ │ ├── UITextView+Rx.swift │ │ │ ├── UIView+Rx.swift │ │ │ └── UIViewController+Rx.swift │ ├── RxSwift │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxSwift │ │ │ ├── AnyObserver.swift │ │ │ ├── Cancelable.swift │ │ │ ├── Concurrency │ │ │ ├── AsyncLock.swift │ │ │ ├── Lock.swift │ │ │ ├── LockOwnerType.swift │ │ │ ├── SynchronizedDisposeType.swift │ │ │ ├── SynchronizedOnType.swift │ │ │ ├── SynchronizedSubscribeType.swift │ │ │ └── SynchronizedUnsubscribeType.swift │ │ │ ├── ConnectableObservableType.swift │ │ │ ├── DataStructures │ │ │ ├── Bag.swift │ │ │ ├── InfiniteSequence.swift │ │ │ ├── PriorityQueue.swift │ │ │ └── Queue.swift │ │ │ ├── Disposable.swift │ │ │ ├── Disposables │ │ │ ├── AnonymousDisposable.swift │ │ │ ├── BinaryDisposable.swift │ │ │ ├── BooleanDisposable.swift │ │ │ ├── CompositeDisposable.swift │ │ │ ├── DisposeBag.swift │ │ │ ├── DisposeBase.swift │ │ │ ├── NAryDisposable.swift │ │ │ ├── NopDisposable.swift │ │ │ ├── RefCountDisposable.swift │ │ │ ├── ScheduledDisposable.swift │ │ │ ├── SerialDisposable.swift │ │ │ ├── SingleAssignmentDisposable.swift │ │ │ ├── StableCompositeDisposable.swift │ │ │ └── SubscriptionDisposable.swift │ │ │ ├── Errors.swift │ │ │ ├── Event.swift │ │ │ ├── Extensions │ │ │ └── String+Rx.swift │ │ │ ├── ImmediateSchedulerType.swift │ │ │ ├── Observable+Extensions.swift │ │ │ ├── Observable.swift │ │ │ ├── ObservableConvertibleType.swift │ │ │ ├── ObservableType.swift │ │ │ ├── Observables │ │ │ ├── Implementations │ │ │ │ ├── AddRef.swift │ │ │ │ ├── Amb.swift │ │ │ │ ├── AnonymousObservable.swift │ │ │ │ ├── Buffer.swift │ │ │ │ ├── Catch.swift │ │ │ │ ├── CombineLatest+CollectionType.swift │ │ │ │ ├── CombineLatest+arity.swift │ │ │ │ ├── CombineLatest.swift │ │ │ │ ├── Concat.swift │ │ │ │ ├── ConnectableObservable.swift │ │ │ │ ├── Debug.swift │ │ │ │ ├── Deferred.swift │ │ │ │ ├── DelaySubscription.swift │ │ │ │ ├── DistinctUntilChanged.swift │ │ │ │ ├── Do.swift │ │ │ │ ├── ElementAt.swift │ │ │ │ ├── Empty.swift │ │ │ │ ├── Error.swift │ │ │ │ ├── Filter.swift │ │ │ │ ├── Generate.swift │ │ │ │ ├── Just.swift │ │ │ │ ├── Map.swift │ │ │ │ ├── Merge.swift │ │ │ │ ├── Multicast.swift │ │ │ │ ├── Never.swift │ │ │ │ ├── ObserveOn.swift │ │ │ │ ├── ObserveOnSerialDispatchQueue.swift │ │ │ │ ├── Producer.swift │ │ │ │ ├── Range.swift │ │ │ │ ├── Reduce.swift │ │ │ │ ├── RefCount.swift │ │ │ │ ├── Repeat.swift │ │ │ │ ├── RetryWhen.swift │ │ │ │ ├── Sample.swift │ │ │ │ ├── Scan.swift │ │ │ │ ├── Sequence.swift │ │ │ │ ├── ShareReplay1.swift │ │ │ │ ├── ShareReplay1WhileConnected.swift │ │ │ │ ├── SingleAsync.swift │ │ │ │ ├── Sink.swift │ │ │ │ ├── Skip.swift │ │ │ │ ├── SkipUntil.swift │ │ │ │ ├── SkipWhile.swift │ │ │ │ ├── StartWith.swift │ │ │ │ ├── SubscribeOn.swift │ │ │ │ ├── Switch.swift │ │ │ │ ├── Take.swift │ │ │ │ ├── TakeLast.swift │ │ │ │ ├── TakeUntil.swift │ │ │ │ ├── TakeWhile.swift │ │ │ │ ├── Throttle.swift │ │ │ │ ├── Timeout.swift │ │ │ │ ├── Timer.swift │ │ │ │ ├── ToArray.swift │ │ │ │ ├── Using.swift │ │ │ │ ├── Window.swift │ │ │ │ ├── WithLatestFrom.swift │ │ │ │ ├── Zip+CollectionType.swift │ │ │ │ ├── Zip+arity.swift │ │ │ │ └── Zip.swift │ │ │ ├── Observable+Aggregate.swift │ │ │ ├── Observable+Binding.swift │ │ │ ├── Observable+Concurrency.swift │ │ │ ├── Observable+Creation.swift │ │ │ ├── Observable+Debug.swift │ │ │ ├── Observable+Multiple.swift │ │ │ ├── Observable+Single.swift │ │ │ ├── Observable+StandardSequenceOperators.swift │ │ │ └── Observable+Time.swift │ │ │ ├── ObserverType.swift │ │ │ ├── Observers │ │ │ ├── AnonymousObserver.swift │ │ │ ├── ObserverBase.swift │ │ │ └── TailRecursiveSink.swift │ │ │ ├── Platform │ │ │ ├── Platform.Darwin.swift │ │ │ └── Platform.Linux.swift │ │ │ ├── Rx.swift │ │ │ ├── RxMutableBox.swift │ │ │ ├── SchedulerType.swift │ │ │ ├── Schedulers │ │ │ ├── ConcurrentDispatchQueueScheduler.swift │ │ │ ├── ConcurrentMainScheduler.swift │ │ │ ├── CurrentThreadScheduler.swift │ │ │ ├── DispatchQueueSchedulerQOS.swift │ │ │ ├── HistoricalScheduler.swift │ │ │ ├── HistoricalSchedulerTimeConverter.swift │ │ │ ├── ImmediateScheduler.swift │ │ │ ├── Internal │ │ │ │ ├── AnonymousInvocable.swift │ │ │ │ ├── InvocableScheduledItem.swift │ │ │ │ ├── InvocableType.swift │ │ │ │ ├── ScheduledItem.swift │ │ │ │ └── ScheduledItemType.swift │ │ │ ├── MainScheduler.swift │ │ │ ├── OperationQueueScheduler.swift │ │ │ ├── RecursiveScheduler.swift │ │ │ ├── SchedulerServices+Emulation.swift │ │ │ ├── SerialDispatchQueueScheduler.swift │ │ │ ├── VirtualTimeConverterType.swift │ │ │ └── VirtualTimeScheduler.swift │ │ │ └── Subjects │ │ │ ├── BehaviorSubject.swift │ │ │ ├── PublishSubject.swift │ │ │ ├── ReplaySubject.swift │ │ │ ├── SubjectType.swift │ │ │ └── Variable.swift │ └── Target Support Files │ │ ├── Action │ │ ├── Action-dummy.m │ │ ├── Action-prefix.pch │ │ ├── Action-umbrella.h │ │ ├── Action.modulemap │ │ ├── Action.xcconfig │ │ └── Info.plist │ │ ├── Pods-RxClassroom │ │ ├── Info.plist │ │ ├── Pods-RxClassroom-acknowledgements.markdown │ │ ├── Pods-RxClassroom-acknowledgements.plist │ │ ├── Pods-RxClassroom-dummy.m │ │ ├── Pods-RxClassroom-frameworks.sh │ │ ├── Pods-RxClassroom-resources.sh │ │ ├── Pods-RxClassroom-umbrella.h │ │ ├── Pods-RxClassroom.debug.xcconfig │ │ ├── Pods-RxClassroom.modulemap │ │ └── Pods-RxClassroom.release.xcconfig │ │ ├── RxCocoa │ │ ├── Info.plist │ │ ├── RxCocoa-dummy.m │ │ ├── RxCocoa-prefix.pch │ │ ├── RxCocoa-umbrella.h │ │ ├── RxCocoa.modulemap │ │ └── RxCocoa.xcconfig │ │ └── RxSwift │ │ ├── Info.plist │ │ ├── RxSwift-dummy.m │ │ ├── RxSwift-prefix.pch │ │ ├── RxSwift-umbrella.h │ │ ├── RxSwift.modulemap │ │ └── RxSwift.xcconfig ├── RxClassroom.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ ├── UserInterfaceState.xcuserstate │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── RxClassroom.xcscheme │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Info.plist │ ├── MainViewController.swift │ └── MainViewModel.swift └── RxClassroomTests │ ├── Info.plist │ └── RxClassroomTests.swift ├── RxClassRoomStep5 ├── .DS_Store ├── .idea │ ├── RxClassroom.iml │ ├── encodings.xml │ ├── misc.xml │ ├── modules.xml │ ├── vcs.xml │ ├── workspace.xml │ └── xcode.xml ├── Podfile ├── Podfile.lock ├── Pods │ ├── Action │ │ ├── Action.swift │ │ ├── AlertAction.swift │ │ ├── License.md │ │ ├── Readme.md │ │ ├── UIBarButtonItem+Action.swift │ │ └── UIButton+Rx.swift │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── Action.xcscheme │ │ │ ├── Pods-RxClassroom.xcscheme │ │ │ ├── RxCocoa.xcscheme │ │ │ ├── RxSwift.xcscheme │ │ │ └── xcschememanagement.plist │ ├── RxCocoa │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxCocoa │ │ │ ├── Common │ │ │ ├── CLLocationManager+Rx.swift │ │ │ ├── CocoaUnits │ │ │ │ ├── ControlEvent.swift │ │ │ │ ├── ControlProperty.swift │ │ │ │ ├── Driver │ │ │ │ │ ├── ControlEvent+Driver.swift │ │ │ │ │ ├── ControlProperty+Driver.swift │ │ │ │ │ ├── Driver+Operators+arity.swift │ │ │ │ │ ├── Driver+Operators.swift │ │ │ │ │ ├── Driver+Subscription.swift │ │ │ │ │ ├── Driver.swift │ │ │ │ │ ├── ObservableConvertibleType+Driver.swift │ │ │ │ │ └── Variable+Driver.swift │ │ │ │ └── UIBindingObserver.swift │ │ │ ├── DelegateProxy.swift │ │ │ ├── DelegateProxyType.swift │ │ │ ├── KVORepresentable+CoreGraphics.swift │ │ │ ├── KVORepresentable+Swift.swift │ │ │ ├── KVORepresentable.swift │ │ │ ├── Logging.swift │ │ │ ├── NSLayoutConstraint+Rx.swift │ │ │ ├── Observable+Bind.swift │ │ │ ├── Observables │ │ │ │ ├── Implementations │ │ │ │ │ ├── ControlTarget.swift │ │ │ │ │ ├── DeallocObservable.swift │ │ │ │ │ ├── KVOObservable.swift │ │ │ │ │ ├── KVOObserver.swift │ │ │ │ │ └── MessageSentObserver.swift │ │ │ │ ├── NSNotificationCenter+Rx.swift │ │ │ │ ├── NSObject+Rx+KVORepresentable.swift │ │ │ │ ├── NSObject+Rx+RawRepresentable.swift │ │ │ │ ├── NSObject+Rx.swift │ │ │ │ └── NSURLSession+Rx.swift │ │ │ ├── Proxies │ │ │ │ └── RxCLLocationManagerDelegateProxy.swift │ │ │ ├── Reactive.swift │ │ │ ├── RxCocoa.swift │ │ │ ├── RxTarget.swift │ │ │ ├── RxTextInput.swift │ │ │ ├── SectionedViewDataSourceType.swift │ │ │ ├── _RX.h │ │ │ ├── _RX.m │ │ │ ├── _RXDelegateProxy.h │ │ │ ├── _RXDelegateProxy.m │ │ │ ├── _RXKVOObserver.h │ │ │ ├── _RXKVOObserver.m │ │ │ ├── _RXObjCRuntime.h │ │ │ └── _RXObjCRuntime.m │ │ │ ├── RxCocoa.h │ │ │ └── iOS │ │ │ ├── DataSources │ │ │ ├── RxCollectionViewReactiveArrayDataSource.swift │ │ │ └── RxTableViewReactiveArrayDataSource.swift │ │ │ ├── Events │ │ │ └── ItemEvents.swift │ │ │ ├── NSTextStorage+Rx.swift │ │ │ ├── Protocols │ │ │ ├── RxCollectionViewDataSourceType.swift │ │ │ └── RxTableViewDataSourceType.swift │ │ │ ├── Proxies │ │ │ ├── RxCollectionViewDataSourceProxy.swift │ │ │ ├── RxCollectionViewDelegateProxy.swift │ │ │ ├── RxImagePickerDelegateProxy.swift │ │ │ ├── RxPickerViewDelegateProxy.swift │ │ │ ├── RxScrollViewDelegateProxy.swift │ │ │ ├── RxSearchBarDelegateProxy.swift │ │ │ ├── RxSearchControllerDelegateProxy.swift │ │ │ ├── RxTabBarDelegateProxy.swift │ │ │ ├── RxTableViewDataSourceProxy.swift │ │ │ ├── RxTableViewDelegateProxy.swift │ │ │ ├── RxTextStorageDelegateProxy.swift │ │ │ └── RxTextViewDelegateProxy.swift │ │ │ ├── UIActivityIndicatorView+Rx.swift │ │ │ ├── UIAlertAction+Rx.swift │ │ │ ├── UIApplication+Rx.swift │ │ │ ├── UIBarButtonItem+Rx.swift │ │ │ ├── UIButton+Rx.swift │ │ │ ├── UICollectionView+Rx.swift │ │ │ ├── UIControl+Rx.swift │ │ │ ├── UIDatePicker+Rx.swift │ │ │ ├── UIGestureRecognizer+Rx.swift │ │ │ ├── UIImagePickerController+Rx.swift │ │ │ ├── UIImageView+Rx.swift │ │ │ ├── UILabel+Rx.swift │ │ │ ├── UINavigationItem+Rx.swift │ │ │ ├── UIPageControl+Rx.swift │ │ │ ├── UIPickerView+Rx.swift │ │ │ ├── UIProgressView+Rx.swift │ │ │ ├── UIRefreshControl+Rx.swift │ │ │ ├── UIScrollView+Rx.swift │ │ │ ├── UISearchBar+Rx.swift │ │ │ ├── UISearchController+Rx.swift │ │ │ ├── UISegmentedControl+Rx.swift │ │ │ ├── UISlider+Rx.swift │ │ │ ├── UIStepper+Rx.swift │ │ │ ├── UISwitch+Rx.swift │ │ │ ├── UITabBar+Rx.swift │ │ │ ├── UITabBarItem+Rx.swift │ │ │ ├── UITableView+Rx.swift │ │ │ ├── UITextField+Rx.swift │ │ │ ├── UITextView+Rx.swift │ │ │ ├── UIView+Rx.swift │ │ │ └── UIViewController+Rx.swift │ ├── RxSwift │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxSwift │ │ │ ├── AnyObserver.swift │ │ │ ├── Cancelable.swift │ │ │ ├── Concurrency │ │ │ ├── AsyncLock.swift │ │ │ ├── Lock.swift │ │ │ ├── LockOwnerType.swift │ │ │ ├── SynchronizedDisposeType.swift │ │ │ ├── SynchronizedOnType.swift │ │ │ ├── SynchronizedSubscribeType.swift │ │ │ └── SynchronizedUnsubscribeType.swift │ │ │ ├── ConnectableObservableType.swift │ │ │ ├── DataStructures │ │ │ ├── Bag.swift │ │ │ ├── InfiniteSequence.swift │ │ │ ├── PriorityQueue.swift │ │ │ └── Queue.swift │ │ │ ├── Disposable.swift │ │ │ ├── Disposables │ │ │ ├── AnonymousDisposable.swift │ │ │ ├── BinaryDisposable.swift │ │ │ ├── BooleanDisposable.swift │ │ │ ├── CompositeDisposable.swift │ │ │ ├── DisposeBag.swift │ │ │ ├── DisposeBase.swift │ │ │ ├── NAryDisposable.swift │ │ │ ├── NopDisposable.swift │ │ │ ├── RefCountDisposable.swift │ │ │ ├── ScheduledDisposable.swift │ │ │ ├── SerialDisposable.swift │ │ │ ├── SingleAssignmentDisposable.swift │ │ │ ├── StableCompositeDisposable.swift │ │ │ └── SubscriptionDisposable.swift │ │ │ ├── Errors.swift │ │ │ ├── Event.swift │ │ │ ├── Extensions │ │ │ └── String+Rx.swift │ │ │ ├── ImmediateSchedulerType.swift │ │ │ ├── Observable+Extensions.swift │ │ │ ├── Observable.swift │ │ │ ├── ObservableConvertibleType.swift │ │ │ ├── ObservableType.swift │ │ │ ├── Observables │ │ │ ├── Implementations │ │ │ │ ├── AddRef.swift │ │ │ │ ├── Amb.swift │ │ │ │ ├── AnonymousObservable.swift │ │ │ │ ├── Buffer.swift │ │ │ │ ├── Catch.swift │ │ │ │ ├── CombineLatest+CollectionType.swift │ │ │ │ ├── CombineLatest+arity.swift │ │ │ │ ├── CombineLatest.swift │ │ │ │ ├── Concat.swift │ │ │ │ ├── ConnectableObservable.swift │ │ │ │ ├── Debug.swift │ │ │ │ ├── Deferred.swift │ │ │ │ ├── DelaySubscription.swift │ │ │ │ ├── DistinctUntilChanged.swift │ │ │ │ ├── Do.swift │ │ │ │ ├── ElementAt.swift │ │ │ │ ├── Empty.swift │ │ │ │ ├── Error.swift │ │ │ │ ├── Filter.swift │ │ │ │ ├── Generate.swift │ │ │ │ ├── Just.swift │ │ │ │ ├── Map.swift │ │ │ │ ├── Merge.swift │ │ │ │ ├── Multicast.swift │ │ │ │ ├── Never.swift │ │ │ │ ├── ObserveOn.swift │ │ │ │ ├── ObserveOnSerialDispatchQueue.swift │ │ │ │ ├── Producer.swift │ │ │ │ ├── Range.swift │ │ │ │ ├── Reduce.swift │ │ │ │ ├── RefCount.swift │ │ │ │ ├── Repeat.swift │ │ │ │ ├── RetryWhen.swift │ │ │ │ ├── Sample.swift │ │ │ │ ├── Scan.swift │ │ │ │ ├── Sequence.swift │ │ │ │ ├── ShareReplay1.swift │ │ │ │ ├── ShareReplay1WhileConnected.swift │ │ │ │ ├── SingleAsync.swift │ │ │ │ ├── Sink.swift │ │ │ │ ├── Skip.swift │ │ │ │ ├── SkipUntil.swift │ │ │ │ ├── SkipWhile.swift │ │ │ │ ├── StartWith.swift │ │ │ │ ├── SubscribeOn.swift │ │ │ │ ├── Switch.swift │ │ │ │ ├── Take.swift │ │ │ │ ├── TakeLast.swift │ │ │ │ ├── TakeUntil.swift │ │ │ │ ├── TakeWhile.swift │ │ │ │ ├── Throttle.swift │ │ │ │ ├── Timeout.swift │ │ │ │ ├── Timer.swift │ │ │ │ ├── ToArray.swift │ │ │ │ ├── Using.swift │ │ │ │ ├── Window.swift │ │ │ │ ├── WithLatestFrom.swift │ │ │ │ ├── Zip+CollectionType.swift │ │ │ │ ├── Zip+arity.swift │ │ │ │ └── Zip.swift │ │ │ ├── Observable+Aggregate.swift │ │ │ ├── Observable+Binding.swift │ │ │ ├── Observable+Concurrency.swift │ │ │ ├── Observable+Creation.swift │ │ │ ├── Observable+Debug.swift │ │ │ ├── Observable+Multiple.swift │ │ │ ├── Observable+Single.swift │ │ │ ├── Observable+StandardSequenceOperators.swift │ │ │ └── Observable+Time.swift │ │ │ ├── ObserverType.swift │ │ │ ├── Observers │ │ │ ├── AnonymousObserver.swift │ │ │ ├── ObserverBase.swift │ │ │ └── TailRecursiveSink.swift │ │ │ ├── Platform │ │ │ ├── Platform.Darwin.swift │ │ │ └── Platform.Linux.swift │ │ │ ├── Rx.swift │ │ │ ├── RxMutableBox.swift │ │ │ ├── SchedulerType.swift │ │ │ ├── Schedulers │ │ │ ├── ConcurrentDispatchQueueScheduler.swift │ │ │ ├── ConcurrentMainScheduler.swift │ │ │ ├── CurrentThreadScheduler.swift │ │ │ ├── DispatchQueueSchedulerQOS.swift │ │ │ ├── HistoricalScheduler.swift │ │ │ ├── HistoricalSchedulerTimeConverter.swift │ │ │ ├── ImmediateScheduler.swift │ │ │ ├── Internal │ │ │ │ ├── AnonymousInvocable.swift │ │ │ │ ├── InvocableScheduledItem.swift │ │ │ │ ├── InvocableType.swift │ │ │ │ ├── ScheduledItem.swift │ │ │ │ └── ScheduledItemType.swift │ │ │ ├── MainScheduler.swift │ │ │ ├── OperationQueueScheduler.swift │ │ │ ├── RecursiveScheduler.swift │ │ │ ├── SchedulerServices+Emulation.swift │ │ │ ├── SerialDispatchQueueScheduler.swift │ │ │ ├── VirtualTimeConverterType.swift │ │ │ └── VirtualTimeScheduler.swift │ │ │ └── Subjects │ │ │ ├── BehaviorSubject.swift │ │ │ ├── PublishSubject.swift │ │ │ ├── ReplaySubject.swift │ │ │ ├── SubjectType.swift │ │ │ └── Variable.swift │ └── Target Support Files │ │ ├── Action │ │ ├── Action-dummy.m │ │ ├── Action-prefix.pch │ │ ├── Action-umbrella.h │ │ ├── Action.modulemap │ │ ├── Action.xcconfig │ │ └── Info.plist │ │ ├── Pods-RxClassroom │ │ ├── Info.plist │ │ ├── Pods-RxClassroom-acknowledgements.markdown │ │ ├── Pods-RxClassroom-acknowledgements.plist │ │ ├── Pods-RxClassroom-dummy.m │ │ ├── Pods-RxClassroom-frameworks.sh │ │ ├── Pods-RxClassroom-resources.sh │ │ ├── Pods-RxClassroom-umbrella.h │ │ ├── Pods-RxClassroom.debug.xcconfig │ │ ├── Pods-RxClassroom.modulemap │ │ └── Pods-RxClassroom.release.xcconfig │ │ ├── RxCocoa │ │ ├── Info.plist │ │ ├── RxCocoa-dummy.m │ │ ├── RxCocoa-prefix.pch │ │ ├── RxCocoa-umbrella.h │ │ ├── RxCocoa.modulemap │ │ └── RxCocoa.xcconfig │ │ └── RxSwift │ │ ├── Info.plist │ │ ├── RxSwift-dummy.m │ │ ├── RxSwift-prefix.pch │ │ ├── RxSwift-umbrella.h │ │ ├── RxSwift.modulemap │ │ └── RxSwift.xcconfig ├── RxClassroom.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ ├── UserInterfaceState.xcuserstate │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── RxClassroom.xcscheme │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Info.plist │ ├── MainViewController.swift │ ├── MainViewModel.swift │ ├── MockWeatherService.swift │ ├── Weather.swift │ └── WeatherServiceType.swift └── RxClassroomTests │ ├── Info.plist │ └── RxClassroomTests.swift ├── RxClassRoomStep6 ├── .DS_Store ├── .idea │ ├── RxClassroom.iml │ ├── encodings.xml │ ├── misc.xml │ ├── modules.xml │ ├── vcs.xml │ ├── workspace.xml │ └── xcode.xml ├── Podfile ├── Podfile.lock ├── Pods │ ├── Action │ │ ├── Action.swift │ │ ├── AlertAction.swift │ │ ├── License.md │ │ ├── Readme.md │ │ ├── UIBarButtonItem+Action.swift │ │ └── UIButton+Rx.swift │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── Action.xcscheme │ │ │ ├── Pods-RxClassroom.xcscheme │ │ │ ├── RxCocoa.xcscheme │ │ │ ├── RxSwift.xcscheme │ │ │ └── xcschememanagement.plist │ ├── RxCocoa │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxCocoa │ │ │ ├── Common │ │ │ ├── CLLocationManager+Rx.swift │ │ │ ├── CocoaUnits │ │ │ │ ├── ControlEvent.swift │ │ │ │ ├── ControlProperty.swift │ │ │ │ ├── Driver │ │ │ │ │ ├── ControlEvent+Driver.swift │ │ │ │ │ ├── ControlProperty+Driver.swift │ │ │ │ │ ├── Driver+Operators+arity.swift │ │ │ │ │ ├── Driver+Operators.swift │ │ │ │ │ ├── Driver+Subscription.swift │ │ │ │ │ ├── Driver.swift │ │ │ │ │ ├── ObservableConvertibleType+Driver.swift │ │ │ │ │ └── Variable+Driver.swift │ │ │ │ └── UIBindingObserver.swift │ │ │ ├── DelegateProxy.swift │ │ │ ├── DelegateProxyType.swift │ │ │ ├── KVORepresentable+CoreGraphics.swift │ │ │ ├── KVORepresentable+Swift.swift │ │ │ ├── KVORepresentable.swift │ │ │ ├── Logging.swift │ │ │ ├── NSLayoutConstraint+Rx.swift │ │ │ ├── Observable+Bind.swift │ │ │ ├── Observables │ │ │ │ ├── Implementations │ │ │ │ │ ├── ControlTarget.swift │ │ │ │ │ ├── DeallocObservable.swift │ │ │ │ │ ├── KVOObservable.swift │ │ │ │ │ ├── KVOObserver.swift │ │ │ │ │ └── MessageSentObserver.swift │ │ │ │ ├── NSNotificationCenter+Rx.swift │ │ │ │ ├── NSObject+Rx+KVORepresentable.swift │ │ │ │ ├── NSObject+Rx+RawRepresentable.swift │ │ │ │ ├── NSObject+Rx.swift │ │ │ │ └── NSURLSession+Rx.swift │ │ │ ├── Proxies │ │ │ │ └── RxCLLocationManagerDelegateProxy.swift │ │ │ ├── Reactive.swift │ │ │ ├── RxCocoa.swift │ │ │ ├── RxTarget.swift │ │ │ ├── RxTextInput.swift │ │ │ ├── SectionedViewDataSourceType.swift │ │ │ ├── _RX.h │ │ │ ├── _RX.m │ │ │ ├── _RXDelegateProxy.h │ │ │ ├── _RXDelegateProxy.m │ │ │ ├── _RXKVOObserver.h │ │ │ ├── _RXKVOObserver.m │ │ │ ├── _RXObjCRuntime.h │ │ │ └── _RXObjCRuntime.m │ │ │ ├── RxCocoa.h │ │ │ └── iOS │ │ │ ├── DataSources │ │ │ ├── RxCollectionViewReactiveArrayDataSource.swift │ │ │ └── RxTableViewReactiveArrayDataSource.swift │ │ │ ├── Events │ │ │ └── ItemEvents.swift │ │ │ ├── NSTextStorage+Rx.swift │ │ │ ├── Protocols │ │ │ ├── RxCollectionViewDataSourceType.swift │ │ │ └── RxTableViewDataSourceType.swift │ │ │ ├── Proxies │ │ │ ├── RxCollectionViewDataSourceProxy.swift │ │ │ ├── RxCollectionViewDelegateProxy.swift │ │ │ ├── RxImagePickerDelegateProxy.swift │ │ │ ├── RxPickerViewDelegateProxy.swift │ │ │ ├── RxScrollViewDelegateProxy.swift │ │ │ ├── RxSearchBarDelegateProxy.swift │ │ │ ├── RxSearchControllerDelegateProxy.swift │ │ │ ├── RxTabBarDelegateProxy.swift │ │ │ ├── RxTableViewDataSourceProxy.swift │ │ │ ├── RxTableViewDelegateProxy.swift │ │ │ ├── RxTextStorageDelegateProxy.swift │ │ │ └── RxTextViewDelegateProxy.swift │ │ │ ├── UIActivityIndicatorView+Rx.swift │ │ │ ├── UIAlertAction+Rx.swift │ │ │ ├── UIApplication+Rx.swift │ │ │ ├── UIBarButtonItem+Rx.swift │ │ │ ├── UIButton+Rx.swift │ │ │ ├── UICollectionView+Rx.swift │ │ │ ├── UIControl+Rx.swift │ │ │ ├── UIDatePicker+Rx.swift │ │ │ ├── UIGestureRecognizer+Rx.swift │ │ │ ├── UIImagePickerController+Rx.swift │ │ │ ├── UIImageView+Rx.swift │ │ │ ├── UILabel+Rx.swift │ │ │ ├── UINavigationItem+Rx.swift │ │ │ ├── UIPageControl+Rx.swift │ │ │ ├── UIPickerView+Rx.swift │ │ │ ├── UIProgressView+Rx.swift │ │ │ ├── UIRefreshControl+Rx.swift │ │ │ ├── UIScrollView+Rx.swift │ │ │ ├── UISearchBar+Rx.swift │ │ │ ├── UISearchController+Rx.swift │ │ │ ├── UISegmentedControl+Rx.swift │ │ │ ├── UISlider+Rx.swift │ │ │ ├── UIStepper+Rx.swift │ │ │ ├── UISwitch+Rx.swift │ │ │ ├── UITabBar+Rx.swift │ │ │ ├── UITabBarItem+Rx.swift │ │ │ ├── UITableView+Rx.swift │ │ │ ├── UITextField+Rx.swift │ │ │ ├── UITextView+Rx.swift │ │ │ ├── UIView+Rx.swift │ │ │ └── UIViewController+Rx.swift │ ├── RxSwift │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxSwift │ │ │ ├── AnyObserver.swift │ │ │ ├── Cancelable.swift │ │ │ ├── Concurrency │ │ │ ├── AsyncLock.swift │ │ │ ├── Lock.swift │ │ │ ├── LockOwnerType.swift │ │ │ ├── SynchronizedDisposeType.swift │ │ │ ├── SynchronizedOnType.swift │ │ │ ├── SynchronizedSubscribeType.swift │ │ │ └── SynchronizedUnsubscribeType.swift │ │ │ ├── ConnectableObservableType.swift │ │ │ ├── DataStructures │ │ │ ├── Bag.swift │ │ │ ├── InfiniteSequence.swift │ │ │ ├── PriorityQueue.swift │ │ │ └── Queue.swift │ │ │ ├── Disposable.swift │ │ │ ├── Disposables │ │ │ ├── AnonymousDisposable.swift │ │ │ ├── BinaryDisposable.swift │ │ │ ├── BooleanDisposable.swift │ │ │ ├── CompositeDisposable.swift │ │ │ ├── DisposeBag.swift │ │ │ ├── DisposeBase.swift │ │ │ ├── NAryDisposable.swift │ │ │ ├── NopDisposable.swift │ │ │ ├── RefCountDisposable.swift │ │ │ ├── ScheduledDisposable.swift │ │ │ ├── SerialDisposable.swift │ │ │ ├── SingleAssignmentDisposable.swift │ │ │ ├── StableCompositeDisposable.swift │ │ │ └── SubscriptionDisposable.swift │ │ │ ├── Errors.swift │ │ │ ├── Event.swift │ │ │ ├── Extensions │ │ │ └── String+Rx.swift │ │ │ ├── ImmediateSchedulerType.swift │ │ │ ├── Observable+Extensions.swift │ │ │ ├── Observable.swift │ │ │ ├── ObservableConvertibleType.swift │ │ │ ├── ObservableType.swift │ │ │ ├── Observables │ │ │ ├── Implementations │ │ │ │ ├── AddRef.swift │ │ │ │ ├── Amb.swift │ │ │ │ ├── AnonymousObservable.swift │ │ │ │ ├── Buffer.swift │ │ │ │ ├── Catch.swift │ │ │ │ ├── CombineLatest+CollectionType.swift │ │ │ │ ├── CombineLatest+arity.swift │ │ │ │ ├── CombineLatest.swift │ │ │ │ ├── Concat.swift │ │ │ │ ├── ConnectableObservable.swift │ │ │ │ ├── Debug.swift │ │ │ │ ├── Deferred.swift │ │ │ │ ├── DelaySubscription.swift │ │ │ │ ├── DistinctUntilChanged.swift │ │ │ │ ├── Do.swift │ │ │ │ ├── ElementAt.swift │ │ │ │ ├── Empty.swift │ │ │ │ ├── Error.swift │ │ │ │ ├── Filter.swift │ │ │ │ ├── Generate.swift │ │ │ │ ├── Just.swift │ │ │ │ ├── Map.swift │ │ │ │ ├── Merge.swift │ │ │ │ ├── Multicast.swift │ │ │ │ ├── Never.swift │ │ │ │ ├── ObserveOn.swift │ │ │ │ ├── ObserveOnSerialDispatchQueue.swift │ │ │ │ ├── Producer.swift │ │ │ │ ├── Range.swift │ │ │ │ ├── Reduce.swift │ │ │ │ ├── RefCount.swift │ │ │ │ ├── Repeat.swift │ │ │ │ ├── RetryWhen.swift │ │ │ │ ├── Sample.swift │ │ │ │ ├── Scan.swift │ │ │ │ ├── Sequence.swift │ │ │ │ ├── ShareReplay1.swift │ │ │ │ ├── ShareReplay1WhileConnected.swift │ │ │ │ ├── SingleAsync.swift │ │ │ │ ├── Sink.swift │ │ │ │ ├── Skip.swift │ │ │ │ ├── SkipUntil.swift │ │ │ │ ├── SkipWhile.swift │ │ │ │ ├── StartWith.swift │ │ │ │ ├── SubscribeOn.swift │ │ │ │ ├── Switch.swift │ │ │ │ ├── Take.swift │ │ │ │ ├── TakeLast.swift │ │ │ │ ├── TakeUntil.swift │ │ │ │ ├── TakeWhile.swift │ │ │ │ ├── Throttle.swift │ │ │ │ ├── Timeout.swift │ │ │ │ ├── Timer.swift │ │ │ │ ├── ToArray.swift │ │ │ │ ├── Using.swift │ │ │ │ ├── Window.swift │ │ │ │ ├── WithLatestFrom.swift │ │ │ │ ├── Zip+CollectionType.swift │ │ │ │ ├── Zip+arity.swift │ │ │ │ └── Zip.swift │ │ │ ├── Observable+Aggregate.swift │ │ │ ├── Observable+Binding.swift │ │ │ ├── Observable+Concurrency.swift │ │ │ ├── Observable+Creation.swift │ │ │ ├── Observable+Debug.swift │ │ │ ├── Observable+Multiple.swift │ │ │ ├── Observable+Single.swift │ │ │ ├── Observable+StandardSequenceOperators.swift │ │ │ └── Observable+Time.swift │ │ │ ├── ObserverType.swift │ │ │ ├── Observers │ │ │ ├── AnonymousObserver.swift │ │ │ ├── ObserverBase.swift │ │ │ └── TailRecursiveSink.swift │ │ │ ├── Platform │ │ │ ├── Platform.Darwin.swift │ │ │ └── Platform.Linux.swift │ │ │ ├── Rx.swift │ │ │ ├── RxMutableBox.swift │ │ │ ├── SchedulerType.swift │ │ │ ├── Schedulers │ │ │ ├── ConcurrentDispatchQueueScheduler.swift │ │ │ ├── ConcurrentMainScheduler.swift │ │ │ ├── CurrentThreadScheduler.swift │ │ │ ├── DispatchQueueSchedulerQOS.swift │ │ │ ├── HistoricalScheduler.swift │ │ │ ├── HistoricalSchedulerTimeConverter.swift │ │ │ ├── ImmediateScheduler.swift │ │ │ ├── Internal │ │ │ │ ├── AnonymousInvocable.swift │ │ │ │ ├── InvocableScheduledItem.swift │ │ │ │ ├── InvocableType.swift │ │ │ │ ├── ScheduledItem.swift │ │ │ │ └── ScheduledItemType.swift │ │ │ ├── MainScheduler.swift │ │ │ ├── OperationQueueScheduler.swift │ │ │ ├── RecursiveScheduler.swift │ │ │ ├── SchedulerServices+Emulation.swift │ │ │ ├── SerialDispatchQueueScheduler.swift │ │ │ ├── VirtualTimeConverterType.swift │ │ │ └── VirtualTimeScheduler.swift │ │ │ └── Subjects │ │ │ ├── BehaviorSubject.swift │ │ │ ├── PublishSubject.swift │ │ │ ├── ReplaySubject.swift │ │ │ ├── SubjectType.swift │ │ │ └── Variable.swift │ └── Target Support Files │ │ ├── Action │ │ ├── Action-dummy.m │ │ ├── Action-prefix.pch │ │ ├── Action-umbrella.h │ │ ├── Action.modulemap │ │ ├── Action.xcconfig │ │ └── Info.plist │ │ ├── Pods-RxClassroom │ │ ├── Info.plist │ │ ├── Pods-RxClassroom-acknowledgements.markdown │ │ ├── Pods-RxClassroom-acknowledgements.plist │ │ ├── Pods-RxClassroom-dummy.m │ │ ├── Pods-RxClassroom-frameworks.sh │ │ ├── Pods-RxClassroom-resources.sh │ │ ├── Pods-RxClassroom-umbrella.h │ │ ├── Pods-RxClassroom.debug.xcconfig │ │ ├── Pods-RxClassroom.modulemap │ │ └── Pods-RxClassroom.release.xcconfig │ │ ├── RxCocoa │ │ ├── Info.plist │ │ ├── RxCocoa-dummy.m │ │ ├── RxCocoa-prefix.pch │ │ ├── RxCocoa-umbrella.h │ │ ├── RxCocoa.modulemap │ │ └── RxCocoa.xcconfig │ │ └── RxSwift │ │ ├── Info.plist │ │ ├── RxSwift-dummy.m │ │ ├── RxSwift-prefix.pch │ │ ├── RxSwift-umbrella.h │ │ ├── RxSwift.modulemap │ │ └── RxSwift.xcconfig ├── RxClassroom.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ ├── UserInterfaceState.xcuserstate │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── RxClassroom.xcscheme │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Info.plist │ ├── MainViewController.swift │ ├── MainViewModel.swift │ ├── MockWeatherService.swift │ ├── Weather.swift │ └── WeatherServiceType.swift └── RxClassroomTests │ ├── Info.plist │ └── RxClassroomTests.swift ├── RxClassRoomStep7 ├── .DS_Store ├── .idea │ ├── RxClassroom.iml │ ├── encodings.xml │ ├── misc.xml │ ├── modules.xml │ ├── vcs.xml │ ├── workspace.xml │ └── xcode.xml ├── Podfile ├── Podfile.lock ├── Pods │ ├── Action │ │ ├── Action.swift │ │ ├── AlertAction.swift │ │ ├── License.md │ │ ├── Readme.md │ │ ├── UIBarButtonItem+Action.swift │ │ └── UIButton+Rx.swift │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── Action.xcscheme │ │ │ ├── Pods-RxClassroom.xcscheme │ │ │ ├── RxCocoa.xcscheme │ │ │ ├── RxSwift.xcscheme │ │ │ └── xcschememanagement.plist │ ├── RxCocoa │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxCocoa │ │ │ ├── Common │ │ │ ├── CLLocationManager+Rx.swift │ │ │ ├── CocoaUnits │ │ │ │ ├── ControlEvent.swift │ │ │ │ ├── ControlProperty.swift │ │ │ │ ├── Driver │ │ │ │ │ ├── ControlEvent+Driver.swift │ │ │ │ │ ├── ControlProperty+Driver.swift │ │ │ │ │ ├── Driver+Operators+arity.swift │ │ │ │ │ ├── Driver+Operators.swift │ │ │ │ │ ├── Driver+Subscription.swift │ │ │ │ │ ├── Driver.swift │ │ │ │ │ ├── ObservableConvertibleType+Driver.swift │ │ │ │ │ └── Variable+Driver.swift │ │ │ │ └── UIBindingObserver.swift │ │ │ ├── DelegateProxy.swift │ │ │ ├── DelegateProxyType.swift │ │ │ ├── KVORepresentable+CoreGraphics.swift │ │ │ ├── KVORepresentable+Swift.swift │ │ │ ├── KVORepresentable.swift │ │ │ ├── Logging.swift │ │ │ ├── NSLayoutConstraint+Rx.swift │ │ │ ├── Observable+Bind.swift │ │ │ ├── Observables │ │ │ │ ├── Implementations │ │ │ │ │ ├── ControlTarget.swift │ │ │ │ │ ├── DeallocObservable.swift │ │ │ │ │ ├── KVOObservable.swift │ │ │ │ │ ├── KVOObserver.swift │ │ │ │ │ └── MessageSentObserver.swift │ │ │ │ ├── NSNotificationCenter+Rx.swift │ │ │ │ ├── NSObject+Rx+KVORepresentable.swift │ │ │ │ ├── NSObject+Rx+RawRepresentable.swift │ │ │ │ ├── NSObject+Rx.swift │ │ │ │ └── NSURLSession+Rx.swift │ │ │ ├── Proxies │ │ │ │ └── RxCLLocationManagerDelegateProxy.swift │ │ │ ├── Reactive.swift │ │ │ ├── RxCocoa.swift │ │ │ ├── RxTarget.swift │ │ │ ├── RxTextInput.swift │ │ │ ├── SectionedViewDataSourceType.swift │ │ │ ├── _RX.h │ │ │ ├── _RX.m │ │ │ ├── _RXDelegateProxy.h │ │ │ ├── _RXDelegateProxy.m │ │ │ ├── _RXKVOObserver.h │ │ │ ├── _RXKVOObserver.m │ │ │ ├── _RXObjCRuntime.h │ │ │ └── _RXObjCRuntime.m │ │ │ ├── RxCocoa.h │ │ │ └── iOS │ │ │ ├── DataSources │ │ │ ├── RxCollectionViewReactiveArrayDataSource.swift │ │ │ └── RxTableViewReactiveArrayDataSource.swift │ │ │ ├── Events │ │ │ └── ItemEvents.swift │ │ │ ├── NSTextStorage+Rx.swift │ │ │ ├── Protocols │ │ │ ├── RxCollectionViewDataSourceType.swift │ │ │ └── RxTableViewDataSourceType.swift │ │ │ ├── Proxies │ │ │ ├── RxCollectionViewDataSourceProxy.swift │ │ │ ├── RxCollectionViewDelegateProxy.swift │ │ │ ├── RxImagePickerDelegateProxy.swift │ │ │ ├── RxPickerViewDelegateProxy.swift │ │ │ ├── RxScrollViewDelegateProxy.swift │ │ │ ├── RxSearchBarDelegateProxy.swift │ │ │ ├── RxSearchControllerDelegateProxy.swift │ │ │ ├── RxTabBarDelegateProxy.swift │ │ │ ├── RxTableViewDataSourceProxy.swift │ │ │ ├── RxTableViewDelegateProxy.swift │ │ │ ├── RxTextStorageDelegateProxy.swift │ │ │ └── RxTextViewDelegateProxy.swift │ │ │ ├── UIActivityIndicatorView+Rx.swift │ │ │ ├── UIAlertAction+Rx.swift │ │ │ ├── UIApplication+Rx.swift │ │ │ ├── UIBarButtonItem+Rx.swift │ │ │ ├── UIButton+Rx.swift │ │ │ ├── UICollectionView+Rx.swift │ │ │ ├── UIControl+Rx.swift │ │ │ ├── UIDatePicker+Rx.swift │ │ │ ├── UIGestureRecognizer+Rx.swift │ │ │ ├── UIImagePickerController+Rx.swift │ │ │ ├── UIImageView+Rx.swift │ │ │ ├── UILabel+Rx.swift │ │ │ ├── UINavigationItem+Rx.swift │ │ │ ├── UIPageControl+Rx.swift │ │ │ ├── UIPickerView+Rx.swift │ │ │ ├── UIProgressView+Rx.swift │ │ │ ├── UIRefreshControl+Rx.swift │ │ │ ├── UIScrollView+Rx.swift │ │ │ ├── UISearchBar+Rx.swift │ │ │ ├── UISearchController+Rx.swift │ │ │ ├── UISegmentedControl+Rx.swift │ │ │ ├── UISlider+Rx.swift │ │ │ ├── UIStepper+Rx.swift │ │ │ ├── UISwitch+Rx.swift │ │ │ ├── UITabBar+Rx.swift │ │ │ ├── UITabBarItem+Rx.swift │ │ │ ├── UITableView+Rx.swift │ │ │ ├── UITextField+Rx.swift │ │ │ ├── UITextView+Rx.swift │ │ │ ├── UIView+Rx.swift │ │ │ └── UIViewController+Rx.swift │ ├── RxSwift │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxSwift │ │ │ ├── AnyObserver.swift │ │ │ ├── Cancelable.swift │ │ │ ├── Concurrency │ │ │ ├── AsyncLock.swift │ │ │ ├── Lock.swift │ │ │ ├── LockOwnerType.swift │ │ │ ├── SynchronizedDisposeType.swift │ │ │ ├── SynchronizedOnType.swift │ │ │ ├── SynchronizedSubscribeType.swift │ │ │ └── SynchronizedUnsubscribeType.swift │ │ │ ├── ConnectableObservableType.swift │ │ │ ├── DataStructures │ │ │ ├── Bag.swift │ │ │ ├── InfiniteSequence.swift │ │ │ ├── PriorityQueue.swift │ │ │ └── Queue.swift │ │ │ ├── Disposable.swift │ │ │ ├── Disposables │ │ │ ├── AnonymousDisposable.swift │ │ │ ├── BinaryDisposable.swift │ │ │ ├── BooleanDisposable.swift │ │ │ ├── CompositeDisposable.swift │ │ │ ├── DisposeBag.swift │ │ │ ├── DisposeBase.swift │ │ │ ├── NAryDisposable.swift │ │ │ ├── NopDisposable.swift │ │ │ ├── RefCountDisposable.swift │ │ │ ├── ScheduledDisposable.swift │ │ │ ├── SerialDisposable.swift │ │ │ ├── SingleAssignmentDisposable.swift │ │ │ ├── StableCompositeDisposable.swift │ │ │ └── SubscriptionDisposable.swift │ │ │ ├── Errors.swift │ │ │ ├── Event.swift │ │ │ ├── Extensions │ │ │ └── String+Rx.swift │ │ │ ├── ImmediateSchedulerType.swift │ │ │ ├── Observable+Extensions.swift │ │ │ ├── Observable.swift │ │ │ ├── ObservableConvertibleType.swift │ │ │ ├── ObservableType.swift │ │ │ ├── Observables │ │ │ ├── Implementations │ │ │ │ ├── AddRef.swift │ │ │ │ ├── Amb.swift │ │ │ │ ├── AnonymousObservable.swift │ │ │ │ ├── Buffer.swift │ │ │ │ ├── Catch.swift │ │ │ │ ├── CombineLatest+CollectionType.swift │ │ │ │ ├── CombineLatest+arity.swift │ │ │ │ ├── CombineLatest.swift │ │ │ │ ├── Concat.swift │ │ │ │ ├── ConnectableObservable.swift │ │ │ │ ├── Debug.swift │ │ │ │ ├── Deferred.swift │ │ │ │ ├── DelaySubscription.swift │ │ │ │ ├── DistinctUntilChanged.swift │ │ │ │ ├── Do.swift │ │ │ │ ├── ElementAt.swift │ │ │ │ ├── Empty.swift │ │ │ │ ├── Error.swift │ │ │ │ ├── Filter.swift │ │ │ │ ├── Generate.swift │ │ │ │ ├── Just.swift │ │ │ │ ├── Map.swift │ │ │ │ ├── Merge.swift │ │ │ │ ├── Multicast.swift │ │ │ │ ├── Never.swift │ │ │ │ ├── ObserveOn.swift │ │ │ │ ├── ObserveOnSerialDispatchQueue.swift │ │ │ │ ├── Producer.swift │ │ │ │ ├── Range.swift │ │ │ │ ├── Reduce.swift │ │ │ │ ├── RefCount.swift │ │ │ │ ├── Repeat.swift │ │ │ │ ├── RetryWhen.swift │ │ │ │ ├── Sample.swift │ │ │ │ ├── Scan.swift │ │ │ │ ├── Sequence.swift │ │ │ │ ├── ShareReplay1.swift │ │ │ │ ├── ShareReplay1WhileConnected.swift │ │ │ │ ├── SingleAsync.swift │ │ │ │ ├── Sink.swift │ │ │ │ ├── Skip.swift │ │ │ │ ├── SkipUntil.swift │ │ │ │ ├── SkipWhile.swift │ │ │ │ ├── StartWith.swift │ │ │ │ ├── SubscribeOn.swift │ │ │ │ ├── Switch.swift │ │ │ │ ├── Take.swift │ │ │ │ ├── TakeLast.swift │ │ │ │ ├── TakeUntil.swift │ │ │ │ ├── TakeWhile.swift │ │ │ │ ├── Throttle.swift │ │ │ │ ├── Timeout.swift │ │ │ │ ├── Timer.swift │ │ │ │ ├── ToArray.swift │ │ │ │ ├── Using.swift │ │ │ │ ├── Window.swift │ │ │ │ ├── WithLatestFrom.swift │ │ │ │ ├── Zip+CollectionType.swift │ │ │ │ ├── Zip+arity.swift │ │ │ │ └── Zip.swift │ │ │ ├── Observable+Aggregate.swift │ │ │ ├── Observable+Binding.swift │ │ │ ├── Observable+Concurrency.swift │ │ │ ├── Observable+Creation.swift │ │ │ ├── Observable+Debug.swift │ │ │ ├── Observable+Multiple.swift │ │ │ ├── Observable+Single.swift │ │ │ ├── Observable+StandardSequenceOperators.swift │ │ │ └── Observable+Time.swift │ │ │ ├── ObserverType.swift │ │ │ ├── Observers │ │ │ ├── AnonymousObserver.swift │ │ │ ├── ObserverBase.swift │ │ │ └── TailRecursiveSink.swift │ │ │ ├── Platform │ │ │ ├── Platform.Darwin.swift │ │ │ └── Platform.Linux.swift │ │ │ ├── Rx.swift │ │ │ ├── RxMutableBox.swift │ │ │ ├── SchedulerType.swift │ │ │ ├── Schedulers │ │ │ ├── ConcurrentDispatchQueueScheduler.swift │ │ │ ├── ConcurrentMainScheduler.swift │ │ │ ├── CurrentThreadScheduler.swift │ │ │ ├── DispatchQueueSchedulerQOS.swift │ │ │ ├── HistoricalScheduler.swift │ │ │ ├── HistoricalSchedulerTimeConverter.swift │ │ │ ├── ImmediateScheduler.swift │ │ │ ├── Internal │ │ │ │ ├── AnonymousInvocable.swift │ │ │ │ ├── InvocableScheduledItem.swift │ │ │ │ ├── InvocableType.swift │ │ │ │ ├── ScheduledItem.swift │ │ │ │ └── ScheduledItemType.swift │ │ │ ├── MainScheduler.swift │ │ │ ├── OperationQueueScheduler.swift │ │ │ ├── RecursiveScheduler.swift │ │ │ ├── SchedulerServices+Emulation.swift │ │ │ ├── SerialDispatchQueueScheduler.swift │ │ │ ├── VirtualTimeConverterType.swift │ │ │ └── VirtualTimeScheduler.swift │ │ │ └── Subjects │ │ │ ├── BehaviorSubject.swift │ │ │ ├── PublishSubject.swift │ │ │ ├── ReplaySubject.swift │ │ │ ├── SubjectType.swift │ │ │ └── Variable.swift │ └── Target Support Files │ │ ├── Action │ │ ├── Action-dummy.m │ │ ├── Action-prefix.pch │ │ ├── Action-umbrella.h │ │ ├── Action.modulemap │ │ ├── Action.xcconfig │ │ └── Info.plist │ │ ├── Pods-RxClassroom │ │ ├── Info.plist │ │ ├── Pods-RxClassroom-acknowledgements.markdown │ │ ├── Pods-RxClassroom-acknowledgements.plist │ │ ├── Pods-RxClassroom-dummy.m │ │ ├── Pods-RxClassroom-frameworks.sh │ │ ├── Pods-RxClassroom-resources.sh │ │ ├── Pods-RxClassroom-umbrella.h │ │ ├── Pods-RxClassroom.debug.xcconfig │ │ ├── Pods-RxClassroom.modulemap │ │ └── Pods-RxClassroom.release.xcconfig │ │ ├── RxCocoa │ │ ├── Info.plist │ │ ├── RxCocoa-dummy.m │ │ ├── RxCocoa-prefix.pch │ │ ├── RxCocoa-umbrella.h │ │ ├── RxCocoa.modulemap │ │ └── RxCocoa.xcconfig │ │ └── RxSwift │ │ ├── Info.plist │ │ ├── RxSwift-dummy.m │ │ ├── RxSwift-prefix.pch │ │ ├── RxSwift-umbrella.h │ │ ├── RxSwift.modulemap │ │ └── RxSwift.xcconfig ├── RxClassroom.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ ├── UserInterfaceState.xcuserstate │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── RxClassroom.xcscheme │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── ForecastCell.swift │ ├── Info.plist │ ├── MainViewController.swift │ ├── MainViewModel.swift │ ├── MockWeatherService.swift │ ├── Weather.swift │ └── WeatherServiceType.swift └── RxClassroomTests │ ├── Info.plist │ └── RxClassroomTests.swift ├── RxClassRoomStep8 ├── .DS_Store ├── .idea │ ├── RxClassroom.iml │ ├── encodings.xml │ ├── misc.xml │ ├── modules.xml │ ├── vcs.xml │ ├── workspace.xml │ └── xcode.xml ├── Podfile ├── Podfile.lock ├── Pods │ ├── Action │ │ ├── Action.swift │ │ ├── AlertAction.swift │ │ ├── License.md │ │ ├── Readme.md │ │ ├── UIBarButtonItem+Action.swift │ │ └── UIButton+Rx.swift │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── Action.xcscheme │ │ │ ├── Pods-RxClassroom.xcscheme │ │ │ ├── RxCocoa.xcscheme │ │ │ ├── RxSwift.xcscheme │ │ │ └── xcschememanagement.plist │ ├── RxCocoa │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxCocoa │ │ │ ├── Common │ │ │ ├── CLLocationManager+Rx.swift │ │ │ ├── CocoaUnits │ │ │ │ ├── ControlEvent.swift │ │ │ │ ├── ControlProperty.swift │ │ │ │ ├── Driver │ │ │ │ │ ├── ControlEvent+Driver.swift │ │ │ │ │ ├── ControlProperty+Driver.swift │ │ │ │ │ ├── Driver+Operators+arity.swift │ │ │ │ │ ├── Driver+Operators.swift │ │ │ │ │ ├── Driver+Subscription.swift │ │ │ │ │ ├── Driver.swift │ │ │ │ │ ├── ObservableConvertibleType+Driver.swift │ │ │ │ │ └── Variable+Driver.swift │ │ │ │ └── UIBindingObserver.swift │ │ │ ├── DelegateProxy.swift │ │ │ ├── DelegateProxyType.swift │ │ │ ├── KVORepresentable+CoreGraphics.swift │ │ │ ├── KVORepresentable+Swift.swift │ │ │ ├── KVORepresentable.swift │ │ │ ├── Logging.swift │ │ │ ├── NSLayoutConstraint+Rx.swift │ │ │ ├── Observable+Bind.swift │ │ │ ├── Observables │ │ │ │ ├── Implementations │ │ │ │ │ ├── ControlTarget.swift │ │ │ │ │ ├── DeallocObservable.swift │ │ │ │ │ ├── KVOObservable.swift │ │ │ │ │ ├── KVOObserver.swift │ │ │ │ │ └── MessageSentObserver.swift │ │ │ │ ├── NSNotificationCenter+Rx.swift │ │ │ │ ├── NSObject+Rx+KVORepresentable.swift │ │ │ │ ├── NSObject+Rx+RawRepresentable.swift │ │ │ │ ├── NSObject+Rx.swift │ │ │ │ └── NSURLSession+Rx.swift │ │ │ ├── Proxies │ │ │ │ └── RxCLLocationManagerDelegateProxy.swift │ │ │ ├── Reactive.swift │ │ │ ├── RxCocoa.swift │ │ │ ├── RxTarget.swift │ │ │ ├── RxTextInput.swift │ │ │ ├── SectionedViewDataSourceType.swift │ │ │ ├── _RX.h │ │ │ ├── _RX.m │ │ │ ├── _RXDelegateProxy.h │ │ │ ├── _RXDelegateProxy.m │ │ │ ├── _RXKVOObserver.h │ │ │ ├── _RXKVOObserver.m │ │ │ ├── _RXObjCRuntime.h │ │ │ └── _RXObjCRuntime.m │ │ │ ├── RxCocoa.h │ │ │ └── iOS │ │ │ ├── DataSources │ │ │ ├── RxCollectionViewReactiveArrayDataSource.swift │ │ │ └── RxTableViewReactiveArrayDataSource.swift │ │ │ ├── Events │ │ │ └── ItemEvents.swift │ │ │ ├── NSTextStorage+Rx.swift │ │ │ ├── Protocols │ │ │ ├── RxCollectionViewDataSourceType.swift │ │ │ └── RxTableViewDataSourceType.swift │ │ │ ├── Proxies │ │ │ ├── RxCollectionViewDataSourceProxy.swift │ │ │ ├── RxCollectionViewDelegateProxy.swift │ │ │ ├── RxImagePickerDelegateProxy.swift │ │ │ ├── RxPickerViewDelegateProxy.swift │ │ │ ├── RxScrollViewDelegateProxy.swift │ │ │ ├── RxSearchBarDelegateProxy.swift │ │ │ ├── RxSearchControllerDelegateProxy.swift │ │ │ ├── RxTabBarDelegateProxy.swift │ │ │ ├── RxTableViewDataSourceProxy.swift │ │ │ ├── RxTableViewDelegateProxy.swift │ │ │ ├── RxTextStorageDelegateProxy.swift │ │ │ └── RxTextViewDelegateProxy.swift │ │ │ ├── UIActivityIndicatorView+Rx.swift │ │ │ ├── UIAlertAction+Rx.swift │ │ │ ├── UIApplication+Rx.swift │ │ │ ├── UIBarButtonItem+Rx.swift │ │ │ ├── UIButton+Rx.swift │ │ │ ├── UICollectionView+Rx.swift │ │ │ ├── UIControl+Rx.swift │ │ │ ├── UIDatePicker+Rx.swift │ │ │ ├── UIGestureRecognizer+Rx.swift │ │ │ ├── UIImagePickerController+Rx.swift │ │ │ ├── UIImageView+Rx.swift │ │ │ ├── UILabel+Rx.swift │ │ │ ├── UINavigationItem+Rx.swift │ │ │ ├── UIPageControl+Rx.swift │ │ │ ├── UIPickerView+Rx.swift │ │ │ ├── UIProgressView+Rx.swift │ │ │ ├── UIRefreshControl+Rx.swift │ │ │ ├── UIScrollView+Rx.swift │ │ │ ├── UISearchBar+Rx.swift │ │ │ ├── UISearchController+Rx.swift │ │ │ ├── UISegmentedControl+Rx.swift │ │ │ ├── UISlider+Rx.swift │ │ │ ├── UIStepper+Rx.swift │ │ │ ├── UISwitch+Rx.swift │ │ │ ├── UITabBar+Rx.swift │ │ │ ├── UITabBarItem+Rx.swift │ │ │ ├── UITableView+Rx.swift │ │ │ ├── UITextField+Rx.swift │ │ │ ├── UITextView+Rx.swift │ │ │ ├── UIView+Rx.swift │ │ │ └── UIViewController+Rx.swift │ ├── RxSwift │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxSwift │ │ │ ├── AnyObserver.swift │ │ │ ├── Cancelable.swift │ │ │ ├── Concurrency │ │ │ ├── AsyncLock.swift │ │ │ ├── Lock.swift │ │ │ ├── LockOwnerType.swift │ │ │ ├── SynchronizedDisposeType.swift │ │ │ ├── SynchronizedOnType.swift │ │ │ ├── SynchronizedSubscribeType.swift │ │ │ └── SynchronizedUnsubscribeType.swift │ │ │ ├── ConnectableObservableType.swift │ │ │ ├── DataStructures │ │ │ ├── Bag.swift │ │ │ ├── InfiniteSequence.swift │ │ │ ├── PriorityQueue.swift │ │ │ └── Queue.swift │ │ │ ├── Disposable.swift │ │ │ ├── Disposables │ │ │ ├── AnonymousDisposable.swift │ │ │ ├── BinaryDisposable.swift │ │ │ ├── BooleanDisposable.swift │ │ │ ├── CompositeDisposable.swift │ │ │ ├── DisposeBag.swift │ │ │ ├── DisposeBase.swift │ │ │ ├── NAryDisposable.swift │ │ │ ├── NopDisposable.swift │ │ │ ├── RefCountDisposable.swift │ │ │ ├── ScheduledDisposable.swift │ │ │ ├── SerialDisposable.swift │ │ │ ├── SingleAssignmentDisposable.swift │ │ │ ├── StableCompositeDisposable.swift │ │ │ └── SubscriptionDisposable.swift │ │ │ ├── Errors.swift │ │ │ ├── Event.swift │ │ │ ├── Extensions │ │ │ └── String+Rx.swift │ │ │ ├── ImmediateSchedulerType.swift │ │ │ ├── Observable+Extensions.swift │ │ │ ├── Observable.swift │ │ │ ├── ObservableConvertibleType.swift │ │ │ ├── ObservableType.swift │ │ │ ├── Observables │ │ │ ├── Implementations │ │ │ │ ├── AddRef.swift │ │ │ │ ├── Amb.swift │ │ │ │ ├── AnonymousObservable.swift │ │ │ │ ├── Buffer.swift │ │ │ │ ├── Catch.swift │ │ │ │ ├── CombineLatest+CollectionType.swift │ │ │ │ ├── CombineLatest+arity.swift │ │ │ │ ├── CombineLatest.swift │ │ │ │ ├── Concat.swift │ │ │ │ ├── ConnectableObservable.swift │ │ │ │ ├── Debug.swift │ │ │ │ ├── Deferred.swift │ │ │ │ ├── DelaySubscription.swift │ │ │ │ ├── DistinctUntilChanged.swift │ │ │ │ ├── Do.swift │ │ │ │ ├── ElementAt.swift │ │ │ │ ├── Empty.swift │ │ │ │ ├── Error.swift │ │ │ │ ├── Filter.swift │ │ │ │ ├── Generate.swift │ │ │ │ ├── Just.swift │ │ │ │ ├── Map.swift │ │ │ │ ├── Merge.swift │ │ │ │ ├── Multicast.swift │ │ │ │ ├── Never.swift │ │ │ │ ├── ObserveOn.swift │ │ │ │ ├── ObserveOnSerialDispatchQueue.swift │ │ │ │ ├── Producer.swift │ │ │ │ ├── Range.swift │ │ │ │ ├── Reduce.swift │ │ │ │ ├── RefCount.swift │ │ │ │ ├── Repeat.swift │ │ │ │ ├── RetryWhen.swift │ │ │ │ ├── Sample.swift │ │ │ │ ├── Scan.swift │ │ │ │ ├── Sequence.swift │ │ │ │ ├── ShareReplay1.swift │ │ │ │ ├── ShareReplay1WhileConnected.swift │ │ │ │ ├── SingleAsync.swift │ │ │ │ ├── Sink.swift │ │ │ │ ├── Skip.swift │ │ │ │ ├── SkipUntil.swift │ │ │ │ ├── SkipWhile.swift │ │ │ │ ├── StartWith.swift │ │ │ │ ├── SubscribeOn.swift │ │ │ │ ├── Switch.swift │ │ │ │ ├── Take.swift │ │ │ │ ├── TakeLast.swift │ │ │ │ ├── TakeUntil.swift │ │ │ │ ├── TakeWhile.swift │ │ │ │ ├── Throttle.swift │ │ │ │ ├── Timeout.swift │ │ │ │ ├── Timer.swift │ │ │ │ ├── ToArray.swift │ │ │ │ ├── Using.swift │ │ │ │ ├── Window.swift │ │ │ │ ├── WithLatestFrom.swift │ │ │ │ ├── Zip+CollectionType.swift │ │ │ │ ├── Zip+arity.swift │ │ │ │ └── Zip.swift │ │ │ ├── Observable+Aggregate.swift │ │ │ ├── Observable+Binding.swift │ │ │ ├── Observable+Concurrency.swift │ │ │ ├── Observable+Creation.swift │ │ │ ├── Observable+Debug.swift │ │ │ ├── Observable+Multiple.swift │ │ │ ├── Observable+Single.swift │ │ │ ├── Observable+StandardSequenceOperators.swift │ │ │ └── Observable+Time.swift │ │ │ ├── ObserverType.swift │ │ │ ├── Observers │ │ │ ├── AnonymousObserver.swift │ │ │ ├── ObserverBase.swift │ │ │ └── TailRecursiveSink.swift │ │ │ ├── Platform │ │ │ ├── Platform.Darwin.swift │ │ │ └── Platform.Linux.swift │ │ │ ├── Rx.swift │ │ │ ├── RxMutableBox.swift │ │ │ ├── SchedulerType.swift │ │ │ ├── Schedulers │ │ │ ├── ConcurrentDispatchQueueScheduler.swift │ │ │ ├── ConcurrentMainScheduler.swift │ │ │ ├── CurrentThreadScheduler.swift │ │ │ ├── DispatchQueueSchedulerQOS.swift │ │ │ ├── HistoricalScheduler.swift │ │ │ ├── HistoricalSchedulerTimeConverter.swift │ │ │ ├── ImmediateScheduler.swift │ │ │ ├── Internal │ │ │ │ ├── AnonymousInvocable.swift │ │ │ │ ├── InvocableScheduledItem.swift │ │ │ │ ├── InvocableType.swift │ │ │ │ ├── ScheduledItem.swift │ │ │ │ └── ScheduledItemType.swift │ │ │ ├── MainScheduler.swift │ │ │ ├── OperationQueueScheduler.swift │ │ │ ├── RecursiveScheduler.swift │ │ │ ├── SchedulerServices+Emulation.swift │ │ │ ├── SerialDispatchQueueScheduler.swift │ │ │ ├── VirtualTimeConverterType.swift │ │ │ └── VirtualTimeScheduler.swift │ │ │ └── Subjects │ │ │ ├── BehaviorSubject.swift │ │ │ ├── PublishSubject.swift │ │ │ ├── ReplaySubject.swift │ │ │ ├── SubjectType.swift │ │ │ └── Variable.swift │ └── Target Support Files │ │ ├── Action │ │ ├── Action-dummy.m │ │ ├── Action-prefix.pch │ │ ├── Action-umbrella.h │ │ ├── Action.modulemap │ │ ├── Action.xcconfig │ │ └── Info.plist │ │ ├── Pods-RxClassroom │ │ ├── Info.plist │ │ ├── Pods-RxClassroom-acknowledgements.markdown │ │ ├── Pods-RxClassroom-acknowledgements.plist │ │ ├── Pods-RxClassroom-dummy.m │ │ ├── Pods-RxClassroom-frameworks.sh │ │ ├── Pods-RxClassroom-resources.sh │ │ ├── Pods-RxClassroom-umbrella.h │ │ ├── Pods-RxClassroom.debug.xcconfig │ │ ├── Pods-RxClassroom.modulemap │ │ └── Pods-RxClassroom.release.xcconfig │ │ ├── RxCocoa │ │ ├── Info.plist │ │ ├── RxCocoa-dummy.m │ │ ├── RxCocoa-prefix.pch │ │ ├── RxCocoa-umbrella.h │ │ ├── RxCocoa.modulemap │ │ └── RxCocoa.xcconfig │ │ └── RxSwift │ │ ├── Info.plist │ │ ├── RxSwift-dummy.m │ │ ├── RxSwift-prefix.pch │ │ ├── RxSwift-umbrella.h │ │ ├── RxSwift.modulemap │ │ └── RxSwift.xcconfig ├── RxClassroom.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── fpillet.xcuserdatad │ │ │ ├── UserInterfaceState.xcuserstate │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── RxClassroom.xcscheme │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── fpillet.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── RxClassroom │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── ForecastCell.swift │ ├── Info.plist │ ├── MainViewController.swift │ ├── MainViewModel.swift │ ├── MockWeatherService.swift │ ├── Weather.swift │ ├── WeatherService.swift │ └── WeatherServiceType.swift └── RxClassroomTests │ ├── Info.plist │ └── RxClassroomTests.swift └── WorkPlan.txt /RxClassRoomStep1/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep1/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /RxClassRoomStep1/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep1/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep1/.idea/xcode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target :RxClassroom do 4 | pod 'RxSwift' 5 | pod 'RxCocoa' 6 | pod 'Action' 7 | end 8 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxCocoa/RxCocoa/Common/Observables/Implementations/DeallocObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DeallocObservable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | class DeallocObservable { 15 | let _subject = ReplaySubject.create(bufferSize: 1) 16 | 17 | init() { 18 | } 19 | 20 | deinit { 21 | _subject.on(.Next(())) 22 | _subject.on(.Completed) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxCocoa/RxCocoa/Common/_RX.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RX.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "_RX.h" 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxCocoa/RxCocoa/Common/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface _RXDelegateProxy : NSObject 12 | 13 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 14 | 15 | -(void)_setForwardToDelegate:(id)forwardToDelegate retainDelegate:(BOOL)retainDelegate; 16 | 17 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 18 | 19 | -(void)interceptedSelector:(SEL)selector withArguments:(NSArray*)arguments; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxCocoa/RxCocoa/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxCocoa/RxCocoa/iOS/Events/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ItemEvents.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/20/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | #if os(iOS) || os(tvOS) 13 | public typealias ItemMovedEvent = (sourceIndex: NSIndexPath, destinationIndex: NSIndexPath) 14 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 15 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 16 | #endif -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Cancelable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 3/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Represents disposable resource with state tracking. 13 | */ 14 | public protocol Cancelable : Disposable { 15 | /** 16 | - returns: Was resource disposed. 17 | */ 18 | var disposed: Bool { get } 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LockOwnerType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol LockOwnerType : class, Lock { 12 | var _lock: NSRecursiveLock { get } 13 | } 14 | 15 | extension LockOwnerType { 16 | func lock() { 17 | _lock.lock() 18 | } 19 | 20 | func unlock() { 21 | _lock.unlock() 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedDisposeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedDisposeType : class, Disposable, Lock { 12 | func _synchronized_dispose() 13 | } 14 | 15 | extension SynchronizedDisposeType { 16 | func synchronizedDispose() { 17 | lock(); defer { unlock() } 18 | _synchronized_dispose() 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedOnType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedOnType : class, ObserverType, Lock { 12 | func _synchronized_on(event: Event) 13 | } 14 | 15 | extension SynchronizedOnType { 16 | func synchronizedOn(event: Event) { 17 | lock(); defer { unlock() } 18 | _synchronized_on(event) 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUnsubscribeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedUnsubscribeType : class { 12 | associatedtype DisposeKey 13 | 14 | func synchronizedUnsubscribe(disposeKey: DisposeKey) 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Respresents a disposable resource. 12 | public protocol Disposable { 13 | /// Dispose resource. 14 | func dispose() 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DisposeBase.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 4/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Base class for all disposables. 13 | */ 14 | public class DisposeBase { 15 | init() { 16 | #if TRACE_RESOURCES 17 | AtomicIncrement(&resourceCount) 18 | #endif 19 | } 20 | 21 | deinit { 22 | #if TRACE_RESOURCES 23 | AtomicDecrement(&resourceCount) 24 | #endif 25 | } 26 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Disposables/NAryDisposable.swift: -------------------------------------------------------------------------------- 1 | // This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project 2 | // 3 | // NAryDisposable.swift 4 | // RxSwift 5 | // 6 | // Created by Krunoslav Zaher on 8/20/15. 7 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 8 | // 9 | 10 | import Foundation 11 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Disposables/StableCompositeDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StableCompositeDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 6/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public final class StableCompositeDisposable { 12 | public static func create(disposable1: Disposable, _ disposable2: Disposable) -> Disposable { 13 | return BinaryDisposable(disposable1, disposable2) 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubscriptionDisposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct SubscriptionDisposable : Disposable { 12 | private let _key: T.DisposeKey 13 | private weak var _owner: T? 14 | 15 | init(owner: T, key: T.DisposeKey) { 16 | _owner = owner 17 | _key = key 18 | } 19 | 20 | func dispose() { 21 | _owner?.synchronizedUnsubscribe(_key) 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Observables/Implementations/Empty.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Empty.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Empty : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | observer.on(.Completed) 14 | return NopDisposable.instance 15 | } 16 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Observables/Implementations/Error.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Error : Producer { 12 | private let _error: ErrorType 13 | 14 | init(error: ErrorType) { 15 | _error = error 16 | } 17 | 18 | override func subscribe(observer: O) -> Disposable { 19 | observer.on(.Error(_error)) 20 | return NopDisposable.instance 21 | } 22 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Observables/Implementations/Never.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Never.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Never : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | return NopDisposable.instance 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Schedulers/Internal/AnonymousInvocable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousInvocable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct AnonymousInvocable : InvocableType { 12 | private let _action: () -> () 13 | 14 | init(_ action: () -> ()) { 15 | _action = action 16 | } 17 | 18 | func invoke() { 19 | _action() 20 | } 21 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableScheduledItem.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct InvocableScheduledItem : InvocableType { 12 | 13 | let _invocable: I 14 | let _state: I.Value 15 | 16 | init(invocable: I, state: I.Value) { 17 | _invocable = invocable 18 | _state = state 19 | } 20 | 21 | func invoke() { 22 | _invocable.invoke(_state) 23 | } 24 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol InvocableType { 12 | func invoke() 13 | } 14 | 15 | protocol InvocableWithValueType { 16 | associatedtype Value 17 | 18 | func invoke(value: Value) 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItemType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol ScheduledItemType 12 | : Cancelable 13 | , InvocableType { 14 | func invoke() 15 | } 16 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/Action/Action-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Action : NSObject 3 | @end 4 | @implementation PodsDummy_Action 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/Action/Action-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/Action/Action-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double ActionVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char ActionVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/Action/Action.modulemap: -------------------------------------------------------------------------------- 1 | framework module Action { 2 | umbrella header "Action-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_RxClassroom : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_RxClassroom 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_RxClassroomVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_RxClassroomVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_RxClassroom { 2 | umbrella header "Pods-RxClassroom-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxCocoa : NSObject 3 | @end 4 | @implementation PodsDummy_RxCocoa 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "RxCocoa.h" 4 | #import "_RX.h" 5 | #import "_RXDelegateProxy.h" 6 | #import "_RXKVOObserver.h" 7 | #import "_RXObjCRuntime.h" 8 | 9 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 10 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 11 | 12 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/RxCocoa/RxCocoa.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/RxCocoa/RxCocoa.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxCocoa 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/RxSwift/RxSwift-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwift : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwift 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double RxSwiftVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/RxSwift/RxSwift.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | umbrella header "RxSwift-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep1/Pods/Target Support Files/RxSwift/RxSwift.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxSwift 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /RxClassRoomStep1/RxClassroom.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep1/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep1/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep1/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep1/RxClassroom.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep1/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep1/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep1/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep1/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep1/RxClassroom/MainViewModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MainViewModel.swift 3 | // RxClassroom 4 | // 5 | // Created by Florent Pillet on 22/09/16. 6 | // Copyright © 2016 Florent Pillet. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class MainViewModel { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /RxClassRoomStep2/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep2/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /RxClassRoomStep2/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep2/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep2/.idea/xcode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target :RxClassroom do 4 | pod 'RxSwift' 5 | pod 'RxCocoa' 6 | pod 'Action' 7 | end 8 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxCocoa/RxCocoa/Common/Observables/Implementations/DeallocObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DeallocObservable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | class DeallocObservable { 15 | let _subject = ReplaySubject.create(bufferSize: 1) 16 | 17 | init() { 18 | } 19 | 20 | deinit { 21 | _subject.on(.Next(())) 22 | _subject.on(.Completed) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxCocoa/RxCocoa/Common/_RX.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RX.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "_RX.h" 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxCocoa/RxCocoa/Common/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface _RXDelegateProxy : NSObject 12 | 13 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 14 | 15 | -(void)_setForwardToDelegate:(id)forwardToDelegate retainDelegate:(BOOL)retainDelegate; 16 | 17 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 18 | 19 | -(void)interceptedSelector:(SEL)selector withArguments:(NSArray*)arguments; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxCocoa/RxCocoa/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxCocoa/RxCocoa/iOS/Events/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ItemEvents.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/20/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | #if os(iOS) || os(tvOS) 13 | public typealias ItemMovedEvent = (sourceIndex: NSIndexPath, destinationIndex: NSIndexPath) 14 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 15 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 16 | #endif -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Cancelable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 3/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Represents disposable resource with state tracking. 13 | */ 14 | public protocol Cancelable : Disposable { 15 | /** 16 | - returns: Was resource disposed. 17 | */ 18 | var disposed: Bool { get } 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LockOwnerType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol LockOwnerType : class, Lock { 12 | var _lock: NSRecursiveLock { get } 13 | } 14 | 15 | extension LockOwnerType { 16 | func lock() { 17 | _lock.lock() 18 | } 19 | 20 | func unlock() { 21 | _lock.unlock() 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedDisposeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedDisposeType : class, Disposable, Lock { 12 | func _synchronized_dispose() 13 | } 14 | 15 | extension SynchronizedDisposeType { 16 | func synchronizedDispose() { 17 | lock(); defer { unlock() } 18 | _synchronized_dispose() 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedOnType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedOnType : class, ObserverType, Lock { 12 | func _synchronized_on(event: Event) 13 | } 14 | 15 | extension SynchronizedOnType { 16 | func synchronizedOn(event: Event) { 17 | lock(); defer { unlock() } 18 | _synchronized_on(event) 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUnsubscribeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedUnsubscribeType : class { 12 | associatedtype DisposeKey 13 | 14 | func synchronizedUnsubscribe(disposeKey: DisposeKey) 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Respresents a disposable resource. 12 | public protocol Disposable { 13 | /// Dispose resource. 14 | func dispose() 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DisposeBase.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 4/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Base class for all disposables. 13 | */ 14 | public class DisposeBase { 15 | init() { 16 | #if TRACE_RESOURCES 17 | AtomicIncrement(&resourceCount) 18 | #endif 19 | } 20 | 21 | deinit { 22 | #if TRACE_RESOURCES 23 | AtomicDecrement(&resourceCount) 24 | #endif 25 | } 26 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Disposables/NAryDisposable.swift: -------------------------------------------------------------------------------- 1 | // This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project 2 | // 3 | // NAryDisposable.swift 4 | // RxSwift 5 | // 6 | // Created by Krunoslav Zaher on 8/20/15. 7 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 8 | // 9 | 10 | import Foundation 11 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Disposables/StableCompositeDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StableCompositeDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 6/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public final class StableCompositeDisposable { 12 | public static func create(disposable1: Disposable, _ disposable2: Disposable) -> Disposable { 13 | return BinaryDisposable(disposable1, disposable2) 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubscriptionDisposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct SubscriptionDisposable : Disposable { 12 | private let _key: T.DisposeKey 13 | private weak var _owner: T? 14 | 15 | init(owner: T, key: T.DisposeKey) { 16 | _owner = owner 17 | _key = key 18 | } 19 | 20 | func dispose() { 21 | _owner?.synchronizedUnsubscribe(_key) 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Observables/Implementations/Empty.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Empty.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Empty : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | observer.on(.Completed) 14 | return NopDisposable.instance 15 | } 16 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Observables/Implementations/Error.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Error : Producer { 12 | private let _error: ErrorType 13 | 14 | init(error: ErrorType) { 15 | _error = error 16 | } 17 | 18 | override func subscribe(observer: O) -> Disposable { 19 | observer.on(.Error(_error)) 20 | return NopDisposable.instance 21 | } 22 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Observables/Implementations/Never.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Never.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Never : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | return NopDisposable.instance 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Schedulers/Internal/AnonymousInvocable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousInvocable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct AnonymousInvocable : InvocableType { 12 | private let _action: () -> () 13 | 14 | init(_ action: () -> ()) { 15 | _action = action 16 | } 17 | 18 | func invoke() { 19 | _action() 20 | } 21 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableScheduledItem.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct InvocableScheduledItem : InvocableType { 12 | 13 | let _invocable: I 14 | let _state: I.Value 15 | 16 | init(invocable: I, state: I.Value) { 17 | _invocable = invocable 18 | _state = state 19 | } 20 | 21 | func invoke() { 22 | _invocable.invoke(_state) 23 | } 24 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol InvocableType { 12 | func invoke() 13 | } 14 | 15 | protocol InvocableWithValueType { 16 | associatedtype Value 17 | 18 | func invoke(value: Value) 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItemType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol ScheduledItemType 12 | : Cancelable 13 | , InvocableType { 14 | func invoke() 15 | } 16 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/Action/Action-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Action : NSObject 3 | @end 4 | @implementation PodsDummy_Action 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/Action/Action-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/Action/Action-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double ActionVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char ActionVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/Action/Action.modulemap: -------------------------------------------------------------------------------- 1 | framework module Action { 2 | umbrella header "Action-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_RxClassroom : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_RxClassroom 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_RxClassroomVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_RxClassroomVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_RxClassroom { 2 | umbrella header "Pods-RxClassroom-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxCocoa : NSObject 3 | @end 4 | @implementation PodsDummy_RxCocoa 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "RxCocoa.h" 4 | #import "_RX.h" 5 | #import "_RXDelegateProxy.h" 6 | #import "_RXKVOObserver.h" 7 | #import "_RXObjCRuntime.h" 8 | 9 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 10 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 11 | 12 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/RxCocoa/RxCocoa.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/RxCocoa/RxCocoa.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxCocoa 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/RxSwift/RxSwift-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwift : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwift 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double RxSwiftVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/RxSwift/RxSwift.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | umbrella header "RxSwift-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep2/Pods/Target Support Files/RxSwift/RxSwift.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxSwift 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /RxClassRoomStep2/RxClassroom.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep2/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep2/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep2/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep2/RxClassroom.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep2/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep2/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep2/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep2/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep3/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep3/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /RxClassRoomStep3/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep3/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep3/.idea/xcode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target :RxClassroom do 4 | pod 'RxSwift' 5 | pod 'RxCocoa' 6 | pod 'Action' 7 | end 8 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxCocoa/RxCocoa/Common/Observables/Implementations/DeallocObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DeallocObservable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | class DeallocObservable { 15 | let _subject = ReplaySubject.create(bufferSize: 1) 16 | 17 | init() { 18 | } 19 | 20 | deinit { 21 | _subject.on(.Next(())) 22 | _subject.on(.Completed) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxCocoa/RxCocoa/Common/_RX.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RX.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "_RX.h" 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxCocoa/RxCocoa/Common/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface _RXDelegateProxy : NSObject 12 | 13 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 14 | 15 | -(void)_setForwardToDelegate:(id)forwardToDelegate retainDelegate:(BOOL)retainDelegate; 16 | 17 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 18 | 19 | -(void)interceptedSelector:(SEL)selector withArguments:(NSArray*)arguments; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxCocoa/RxCocoa/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxCocoa/RxCocoa/iOS/Events/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ItemEvents.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/20/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | #if os(iOS) || os(tvOS) 13 | public typealias ItemMovedEvent = (sourceIndex: NSIndexPath, destinationIndex: NSIndexPath) 14 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 15 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 16 | #endif -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Cancelable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 3/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Represents disposable resource with state tracking. 13 | */ 14 | public protocol Cancelable : Disposable { 15 | /** 16 | - returns: Was resource disposed. 17 | */ 18 | var disposed: Bool { get } 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LockOwnerType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol LockOwnerType : class, Lock { 12 | var _lock: NSRecursiveLock { get } 13 | } 14 | 15 | extension LockOwnerType { 16 | func lock() { 17 | _lock.lock() 18 | } 19 | 20 | func unlock() { 21 | _lock.unlock() 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedDisposeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedDisposeType : class, Disposable, Lock { 12 | func _synchronized_dispose() 13 | } 14 | 15 | extension SynchronizedDisposeType { 16 | func synchronizedDispose() { 17 | lock(); defer { unlock() } 18 | _synchronized_dispose() 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedOnType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedOnType : class, ObserverType, Lock { 12 | func _synchronized_on(event: Event) 13 | } 14 | 15 | extension SynchronizedOnType { 16 | func synchronizedOn(event: Event) { 17 | lock(); defer { unlock() } 18 | _synchronized_on(event) 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUnsubscribeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedUnsubscribeType : class { 12 | associatedtype DisposeKey 13 | 14 | func synchronizedUnsubscribe(disposeKey: DisposeKey) 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Respresents a disposable resource. 12 | public protocol Disposable { 13 | /// Dispose resource. 14 | func dispose() 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DisposeBase.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 4/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Base class for all disposables. 13 | */ 14 | public class DisposeBase { 15 | init() { 16 | #if TRACE_RESOURCES 17 | AtomicIncrement(&resourceCount) 18 | #endif 19 | } 20 | 21 | deinit { 22 | #if TRACE_RESOURCES 23 | AtomicDecrement(&resourceCount) 24 | #endif 25 | } 26 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Disposables/NAryDisposable.swift: -------------------------------------------------------------------------------- 1 | // This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project 2 | // 3 | // NAryDisposable.swift 4 | // RxSwift 5 | // 6 | // Created by Krunoslav Zaher on 8/20/15. 7 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 8 | // 9 | 10 | import Foundation 11 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Disposables/StableCompositeDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StableCompositeDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 6/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public final class StableCompositeDisposable { 12 | public static func create(disposable1: Disposable, _ disposable2: Disposable) -> Disposable { 13 | return BinaryDisposable(disposable1, disposable2) 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubscriptionDisposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct SubscriptionDisposable : Disposable { 12 | private let _key: T.DisposeKey 13 | private weak var _owner: T? 14 | 15 | init(owner: T, key: T.DisposeKey) { 16 | _owner = owner 17 | _key = key 18 | } 19 | 20 | func dispose() { 21 | _owner?.synchronizedUnsubscribe(_key) 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Observables/Implementations/Empty.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Empty.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Empty : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | observer.on(.Completed) 14 | return NopDisposable.instance 15 | } 16 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Observables/Implementations/Error.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Error : Producer { 12 | private let _error: ErrorType 13 | 14 | init(error: ErrorType) { 15 | _error = error 16 | } 17 | 18 | override func subscribe(observer: O) -> Disposable { 19 | observer.on(.Error(_error)) 20 | return NopDisposable.instance 21 | } 22 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Observables/Implementations/Never.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Never.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Never : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | return NopDisposable.instance 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Schedulers/Internal/AnonymousInvocable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousInvocable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct AnonymousInvocable : InvocableType { 12 | private let _action: () -> () 13 | 14 | init(_ action: () -> ()) { 15 | _action = action 16 | } 17 | 18 | func invoke() { 19 | _action() 20 | } 21 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableScheduledItem.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct InvocableScheduledItem : InvocableType { 12 | 13 | let _invocable: I 14 | let _state: I.Value 15 | 16 | init(invocable: I, state: I.Value) { 17 | _invocable = invocable 18 | _state = state 19 | } 20 | 21 | func invoke() { 22 | _invocable.invoke(_state) 23 | } 24 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol InvocableType { 12 | func invoke() 13 | } 14 | 15 | protocol InvocableWithValueType { 16 | associatedtype Value 17 | 18 | func invoke(value: Value) 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItemType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol ScheduledItemType 12 | : Cancelable 13 | , InvocableType { 14 | func invoke() 15 | } 16 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/Action/Action-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Action : NSObject 3 | @end 4 | @implementation PodsDummy_Action 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/Action/Action-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/Action/Action-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double ActionVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char ActionVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/Action/Action.modulemap: -------------------------------------------------------------------------------- 1 | framework module Action { 2 | umbrella header "Action-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_RxClassroom : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_RxClassroom 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_RxClassroomVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_RxClassroomVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_RxClassroom { 2 | umbrella header "Pods-RxClassroom-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxCocoa : NSObject 3 | @end 4 | @implementation PodsDummy_RxCocoa 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "RxCocoa.h" 4 | #import "_RX.h" 5 | #import "_RXDelegateProxy.h" 6 | #import "_RXKVOObserver.h" 7 | #import "_RXObjCRuntime.h" 8 | 9 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 10 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 11 | 12 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/RxCocoa/RxCocoa.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/RxCocoa/RxCocoa.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxCocoa 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/RxSwift/RxSwift-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwift : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwift 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double RxSwiftVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/RxSwift/RxSwift.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | umbrella header "RxSwift-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep3/Pods/Target Support Files/RxSwift/RxSwift.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxSwift 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /RxClassRoomStep3/RxClassroom.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep3/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep3/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep3/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep3/RxClassroom.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep3/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep3/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep3/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep3/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep4/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep4/.DS_Store -------------------------------------------------------------------------------- /RxClassRoomStep4/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep4/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /RxClassRoomStep4/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep4/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep4/.idea/xcode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target :RxClassroom do 4 | pod 'RxSwift' 5 | pod 'RxCocoa' 6 | pod 'Action' 7 | end 8 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxCocoa/RxCocoa/Common/Observables/Implementations/DeallocObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DeallocObservable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | class DeallocObservable { 15 | let _subject = ReplaySubject.create(bufferSize: 1) 16 | 17 | init() { 18 | } 19 | 20 | deinit { 21 | _subject.on(.Next(())) 22 | _subject.on(.Completed) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxCocoa/RxCocoa/Common/_RX.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RX.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "_RX.h" 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxCocoa/RxCocoa/Common/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface _RXDelegateProxy : NSObject 12 | 13 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 14 | 15 | -(void)_setForwardToDelegate:(id)forwardToDelegate retainDelegate:(BOOL)retainDelegate; 16 | 17 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 18 | 19 | -(void)interceptedSelector:(SEL)selector withArguments:(NSArray*)arguments; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxCocoa/RxCocoa/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxCocoa/RxCocoa/iOS/Events/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ItemEvents.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/20/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | #if os(iOS) || os(tvOS) 13 | public typealias ItemMovedEvent = (sourceIndex: NSIndexPath, destinationIndex: NSIndexPath) 14 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 15 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 16 | #endif -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Cancelable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 3/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Represents disposable resource with state tracking. 13 | */ 14 | public protocol Cancelable : Disposable { 15 | /** 16 | - returns: Was resource disposed. 17 | */ 18 | var disposed: Bool { get } 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LockOwnerType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol LockOwnerType : class, Lock { 12 | var _lock: NSRecursiveLock { get } 13 | } 14 | 15 | extension LockOwnerType { 16 | func lock() { 17 | _lock.lock() 18 | } 19 | 20 | func unlock() { 21 | _lock.unlock() 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedDisposeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedDisposeType : class, Disposable, Lock { 12 | func _synchronized_dispose() 13 | } 14 | 15 | extension SynchronizedDisposeType { 16 | func synchronizedDispose() { 17 | lock(); defer { unlock() } 18 | _synchronized_dispose() 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedOnType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedOnType : class, ObserverType, Lock { 12 | func _synchronized_on(event: Event) 13 | } 14 | 15 | extension SynchronizedOnType { 16 | func synchronizedOn(event: Event) { 17 | lock(); defer { unlock() } 18 | _synchronized_on(event) 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUnsubscribeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedUnsubscribeType : class { 12 | associatedtype DisposeKey 13 | 14 | func synchronizedUnsubscribe(disposeKey: DisposeKey) 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Respresents a disposable resource. 12 | public protocol Disposable { 13 | /// Dispose resource. 14 | func dispose() 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DisposeBase.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 4/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Base class for all disposables. 13 | */ 14 | public class DisposeBase { 15 | init() { 16 | #if TRACE_RESOURCES 17 | AtomicIncrement(&resourceCount) 18 | #endif 19 | } 20 | 21 | deinit { 22 | #if TRACE_RESOURCES 23 | AtomicDecrement(&resourceCount) 24 | #endif 25 | } 26 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Disposables/NAryDisposable.swift: -------------------------------------------------------------------------------- 1 | // This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project 2 | // 3 | // NAryDisposable.swift 4 | // RxSwift 5 | // 6 | // Created by Krunoslav Zaher on 8/20/15. 7 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 8 | // 9 | 10 | import Foundation 11 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Disposables/StableCompositeDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StableCompositeDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 6/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public final class StableCompositeDisposable { 12 | public static func create(disposable1: Disposable, _ disposable2: Disposable) -> Disposable { 13 | return BinaryDisposable(disposable1, disposable2) 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubscriptionDisposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct SubscriptionDisposable : Disposable { 12 | private let _key: T.DisposeKey 13 | private weak var _owner: T? 14 | 15 | init(owner: T, key: T.DisposeKey) { 16 | _owner = owner 17 | _key = key 18 | } 19 | 20 | func dispose() { 21 | _owner?.synchronizedUnsubscribe(_key) 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Observables/Implementations/Empty.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Empty.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Empty : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | observer.on(.Completed) 14 | return NopDisposable.instance 15 | } 16 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Observables/Implementations/Error.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Error : Producer { 12 | private let _error: ErrorType 13 | 14 | init(error: ErrorType) { 15 | _error = error 16 | } 17 | 18 | override func subscribe(observer: O) -> Disposable { 19 | observer.on(.Error(_error)) 20 | return NopDisposable.instance 21 | } 22 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Observables/Implementations/Never.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Never.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Never : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | return NopDisposable.instance 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Schedulers/Internal/AnonymousInvocable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousInvocable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct AnonymousInvocable : InvocableType { 12 | private let _action: () -> () 13 | 14 | init(_ action: () -> ()) { 15 | _action = action 16 | } 17 | 18 | func invoke() { 19 | _action() 20 | } 21 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableScheduledItem.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct InvocableScheduledItem : InvocableType { 12 | 13 | let _invocable: I 14 | let _state: I.Value 15 | 16 | init(invocable: I, state: I.Value) { 17 | _invocable = invocable 18 | _state = state 19 | } 20 | 21 | func invoke() { 22 | _invocable.invoke(_state) 23 | } 24 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol InvocableType { 12 | func invoke() 13 | } 14 | 15 | protocol InvocableWithValueType { 16 | associatedtype Value 17 | 18 | func invoke(value: Value) 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItemType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol ScheduledItemType 12 | : Cancelable 13 | , InvocableType { 14 | func invoke() 15 | } 16 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/Action/Action-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Action : NSObject 3 | @end 4 | @implementation PodsDummy_Action 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/Action/Action-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/Action/Action-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double ActionVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char ActionVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/Action/Action.modulemap: -------------------------------------------------------------------------------- 1 | framework module Action { 2 | umbrella header "Action-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_RxClassroom : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_RxClassroom 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_RxClassroomVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_RxClassroomVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_RxClassroom { 2 | umbrella header "Pods-RxClassroom-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxCocoa : NSObject 3 | @end 4 | @implementation PodsDummy_RxCocoa 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "RxCocoa.h" 4 | #import "_RX.h" 5 | #import "_RXDelegateProxy.h" 6 | #import "_RXKVOObserver.h" 7 | #import "_RXObjCRuntime.h" 8 | 9 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 10 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 11 | 12 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/RxCocoa/RxCocoa.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/RxCocoa/RxCocoa.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxCocoa 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/RxSwift/RxSwift-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwift : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwift 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double RxSwiftVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/RxSwift/RxSwift.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | umbrella header "RxSwift-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep4/Pods/Target Support Files/RxSwift/RxSwift.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxSwift 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /RxClassRoomStep4/RxClassroom.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep4/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep4/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep4/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep4/RxClassroom.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep4/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep4/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep4/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep4/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep5/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep5/.DS_Store -------------------------------------------------------------------------------- /RxClassRoomStep5/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep5/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /RxClassRoomStep5/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep5/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep5/.idea/xcode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target :RxClassroom do 4 | pod 'RxSwift' 5 | pod 'RxCocoa' 6 | pod 'Action' 7 | end 8 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxCocoa/RxCocoa/Common/Observables/Implementations/DeallocObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DeallocObservable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | class DeallocObservable { 15 | let _subject = ReplaySubject.create(bufferSize: 1) 16 | 17 | init() { 18 | } 19 | 20 | deinit { 21 | _subject.on(.Next(())) 22 | _subject.on(.Completed) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxCocoa/RxCocoa/Common/_RX.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RX.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "_RX.h" 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxCocoa/RxCocoa/Common/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface _RXDelegateProxy : NSObject 12 | 13 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 14 | 15 | -(void)_setForwardToDelegate:(id)forwardToDelegate retainDelegate:(BOOL)retainDelegate; 16 | 17 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 18 | 19 | -(void)interceptedSelector:(SEL)selector withArguments:(NSArray*)arguments; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxCocoa/RxCocoa/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxCocoa/RxCocoa/iOS/Events/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ItemEvents.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/20/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | #if os(iOS) || os(tvOS) 13 | public typealias ItemMovedEvent = (sourceIndex: NSIndexPath, destinationIndex: NSIndexPath) 14 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 15 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 16 | #endif -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Cancelable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 3/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Represents disposable resource with state tracking. 13 | */ 14 | public protocol Cancelable : Disposable { 15 | /** 16 | - returns: Was resource disposed. 17 | */ 18 | var disposed: Bool { get } 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LockOwnerType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol LockOwnerType : class, Lock { 12 | var _lock: NSRecursiveLock { get } 13 | } 14 | 15 | extension LockOwnerType { 16 | func lock() { 17 | _lock.lock() 18 | } 19 | 20 | func unlock() { 21 | _lock.unlock() 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedDisposeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedDisposeType : class, Disposable, Lock { 12 | func _synchronized_dispose() 13 | } 14 | 15 | extension SynchronizedDisposeType { 16 | func synchronizedDispose() { 17 | lock(); defer { unlock() } 18 | _synchronized_dispose() 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedOnType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedOnType : class, ObserverType, Lock { 12 | func _synchronized_on(event: Event) 13 | } 14 | 15 | extension SynchronizedOnType { 16 | func synchronizedOn(event: Event) { 17 | lock(); defer { unlock() } 18 | _synchronized_on(event) 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUnsubscribeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedUnsubscribeType : class { 12 | associatedtype DisposeKey 13 | 14 | func synchronizedUnsubscribe(disposeKey: DisposeKey) 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Respresents a disposable resource. 12 | public protocol Disposable { 13 | /// Dispose resource. 14 | func dispose() 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DisposeBase.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 4/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Base class for all disposables. 13 | */ 14 | public class DisposeBase { 15 | init() { 16 | #if TRACE_RESOURCES 17 | AtomicIncrement(&resourceCount) 18 | #endif 19 | } 20 | 21 | deinit { 22 | #if TRACE_RESOURCES 23 | AtomicDecrement(&resourceCount) 24 | #endif 25 | } 26 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Disposables/NAryDisposable.swift: -------------------------------------------------------------------------------- 1 | // This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project 2 | // 3 | // NAryDisposable.swift 4 | // RxSwift 5 | // 6 | // Created by Krunoslav Zaher on 8/20/15. 7 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 8 | // 9 | 10 | import Foundation 11 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Disposables/StableCompositeDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StableCompositeDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 6/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public final class StableCompositeDisposable { 12 | public static func create(disposable1: Disposable, _ disposable2: Disposable) -> Disposable { 13 | return BinaryDisposable(disposable1, disposable2) 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubscriptionDisposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct SubscriptionDisposable : Disposable { 12 | private let _key: T.DisposeKey 13 | private weak var _owner: T? 14 | 15 | init(owner: T, key: T.DisposeKey) { 16 | _owner = owner 17 | _key = key 18 | } 19 | 20 | func dispose() { 21 | _owner?.synchronizedUnsubscribe(_key) 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Observables/Implementations/Empty.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Empty.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Empty : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | observer.on(.Completed) 14 | return NopDisposable.instance 15 | } 16 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Observables/Implementations/Error.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Error : Producer { 12 | private let _error: ErrorType 13 | 14 | init(error: ErrorType) { 15 | _error = error 16 | } 17 | 18 | override func subscribe(observer: O) -> Disposable { 19 | observer.on(.Error(_error)) 20 | return NopDisposable.instance 21 | } 22 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Observables/Implementations/Never.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Never.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Never : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | return NopDisposable.instance 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Schedulers/Internal/AnonymousInvocable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousInvocable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct AnonymousInvocable : InvocableType { 12 | private let _action: () -> () 13 | 14 | init(_ action: () -> ()) { 15 | _action = action 16 | } 17 | 18 | func invoke() { 19 | _action() 20 | } 21 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableScheduledItem.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct InvocableScheduledItem : InvocableType { 12 | 13 | let _invocable: I 14 | let _state: I.Value 15 | 16 | init(invocable: I, state: I.Value) { 17 | _invocable = invocable 18 | _state = state 19 | } 20 | 21 | func invoke() { 22 | _invocable.invoke(_state) 23 | } 24 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol InvocableType { 12 | func invoke() 13 | } 14 | 15 | protocol InvocableWithValueType { 16 | associatedtype Value 17 | 18 | func invoke(value: Value) 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItemType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol ScheduledItemType 12 | : Cancelable 13 | , InvocableType { 14 | func invoke() 15 | } 16 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/Action/Action-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Action : NSObject 3 | @end 4 | @implementation PodsDummy_Action 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/Action/Action-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/Action/Action-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double ActionVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char ActionVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/Action/Action.modulemap: -------------------------------------------------------------------------------- 1 | framework module Action { 2 | umbrella header "Action-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_RxClassroom : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_RxClassroom 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_RxClassroomVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_RxClassroomVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_RxClassroom { 2 | umbrella header "Pods-RxClassroom-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxCocoa : NSObject 3 | @end 4 | @implementation PodsDummy_RxCocoa 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "RxCocoa.h" 4 | #import "_RX.h" 5 | #import "_RXDelegateProxy.h" 6 | #import "_RXKVOObserver.h" 7 | #import "_RXObjCRuntime.h" 8 | 9 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 10 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 11 | 12 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/RxCocoa/RxCocoa.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/RxCocoa/RxCocoa.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxCocoa 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/RxSwift/RxSwift-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwift : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwift 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double RxSwiftVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/RxSwift/RxSwift.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | umbrella header "RxSwift-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep5/Pods/Target Support Files/RxSwift/RxSwift.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxSwift 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /RxClassRoomStep5/RxClassroom.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep5/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep5/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep5/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep5/RxClassroom.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep5/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep5/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep5/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep5/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep5/RxClassroom/Weather.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Weather.swift 3 | // RxClassroom 4 | // 5 | 6 | import Foundation 7 | 8 | enum Sky { 9 | case Clear 10 | case Windy 11 | case PartlyCloudy 12 | case Cloudy 13 | case Rainy 14 | } 15 | 16 | struct Conditions { 17 | let time : NSDate 18 | let temperature : Int 19 | let sky : Sky 20 | } 21 | 22 | struct Forecast { 23 | let city : String 24 | let forecast : [Conditions] 25 | } 26 | -------------------------------------------------------------------------------- /RxClassRoomStep5/RxClassroom/WeatherServiceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WeatherService.swift 3 | // RxClassroom 4 | // 5 | 6 | import Foundation 7 | import RxSwift 8 | 9 | protocol WeatherServiceType { 10 | 11 | func getForecast(city: String) -> Observable 12 | 13 | } 14 | -------------------------------------------------------------------------------- /RxClassRoomStep6/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep6/.DS_Store -------------------------------------------------------------------------------- /RxClassRoomStep6/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep6/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /RxClassRoomStep6/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep6/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep6/.idea/xcode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target :RxClassroom do 4 | pod 'RxSwift' 5 | pod 'RxCocoa' 6 | pod 'Action' 7 | end 8 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxCocoa/RxCocoa/Common/Observables/Implementations/DeallocObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DeallocObservable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | class DeallocObservable { 15 | let _subject = ReplaySubject.create(bufferSize: 1) 16 | 17 | init() { 18 | } 19 | 20 | deinit { 21 | _subject.on(.Next(())) 22 | _subject.on(.Completed) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxCocoa/RxCocoa/Common/_RX.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RX.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "_RX.h" 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxCocoa/RxCocoa/Common/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface _RXDelegateProxy : NSObject 12 | 13 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 14 | 15 | -(void)_setForwardToDelegate:(id)forwardToDelegate retainDelegate:(BOOL)retainDelegate; 16 | 17 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 18 | 19 | -(void)interceptedSelector:(SEL)selector withArguments:(NSArray*)arguments; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxCocoa/RxCocoa/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxCocoa/RxCocoa/iOS/Events/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ItemEvents.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/20/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | #if os(iOS) || os(tvOS) 13 | public typealias ItemMovedEvent = (sourceIndex: NSIndexPath, destinationIndex: NSIndexPath) 14 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 15 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 16 | #endif -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Cancelable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 3/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Represents disposable resource with state tracking. 13 | */ 14 | public protocol Cancelable : Disposable { 15 | /** 16 | - returns: Was resource disposed. 17 | */ 18 | var disposed: Bool { get } 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LockOwnerType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol LockOwnerType : class, Lock { 12 | var _lock: NSRecursiveLock { get } 13 | } 14 | 15 | extension LockOwnerType { 16 | func lock() { 17 | _lock.lock() 18 | } 19 | 20 | func unlock() { 21 | _lock.unlock() 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedDisposeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedDisposeType : class, Disposable, Lock { 12 | func _synchronized_dispose() 13 | } 14 | 15 | extension SynchronizedDisposeType { 16 | func synchronizedDispose() { 17 | lock(); defer { unlock() } 18 | _synchronized_dispose() 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedOnType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedOnType : class, ObserverType, Lock { 12 | func _synchronized_on(event: Event) 13 | } 14 | 15 | extension SynchronizedOnType { 16 | func synchronizedOn(event: Event) { 17 | lock(); defer { unlock() } 18 | _synchronized_on(event) 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUnsubscribeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedUnsubscribeType : class { 12 | associatedtype DisposeKey 13 | 14 | func synchronizedUnsubscribe(disposeKey: DisposeKey) 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Respresents a disposable resource. 12 | public protocol Disposable { 13 | /// Dispose resource. 14 | func dispose() 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DisposeBase.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 4/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Base class for all disposables. 13 | */ 14 | public class DisposeBase { 15 | init() { 16 | #if TRACE_RESOURCES 17 | AtomicIncrement(&resourceCount) 18 | #endif 19 | } 20 | 21 | deinit { 22 | #if TRACE_RESOURCES 23 | AtomicDecrement(&resourceCount) 24 | #endif 25 | } 26 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Disposables/NAryDisposable.swift: -------------------------------------------------------------------------------- 1 | // This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project 2 | // 3 | // NAryDisposable.swift 4 | // RxSwift 5 | // 6 | // Created by Krunoslav Zaher on 8/20/15. 7 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 8 | // 9 | 10 | import Foundation 11 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Disposables/StableCompositeDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StableCompositeDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 6/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public final class StableCompositeDisposable { 12 | public static func create(disposable1: Disposable, _ disposable2: Disposable) -> Disposable { 13 | return BinaryDisposable(disposable1, disposable2) 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubscriptionDisposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct SubscriptionDisposable : Disposable { 12 | private let _key: T.DisposeKey 13 | private weak var _owner: T? 14 | 15 | init(owner: T, key: T.DisposeKey) { 16 | _owner = owner 17 | _key = key 18 | } 19 | 20 | func dispose() { 21 | _owner?.synchronizedUnsubscribe(_key) 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Observables/Implementations/Empty.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Empty.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Empty : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | observer.on(.Completed) 14 | return NopDisposable.instance 15 | } 16 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Observables/Implementations/Error.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Error : Producer { 12 | private let _error: ErrorType 13 | 14 | init(error: ErrorType) { 15 | _error = error 16 | } 17 | 18 | override func subscribe(observer: O) -> Disposable { 19 | observer.on(.Error(_error)) 20 | return NopDisposable.instance 21 | } 22 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Observables/Implementations/Never.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Never.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Never : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | return NopDisposable.instance 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Schedulers/Internal/AnonymousInvocable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousInvocable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct AnonymousInvocable : InvocableType { 12 | private let _action: () -> () 13 | 14 | init(_ action: () -> ()) { 15 | _action = action 16 | } 17 | 18 | func invoke() { 19 | _action() 20 | } 21 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableScheduledItem.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct InvocableScheduledItem : InvocableType { 12 | 13 | let _invocable: I 14 | let _state: I.Value 15 | 16 | init(invocable: I, state: I.Value) { 17 | _invocable = invocable 18 | _state = state 19 | } 20 | 21 | func invoke() { 22 | _invocable.invoke(_state) 23 | } 24 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol InvocableType { 12 | func invoke() 13 | } 14 | 15 | protocol InvocableWithValueType { 16 | associatedtype Value 17 | 18 | func invoke(value: Value) 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItemType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol ScheduledItemType 12 | : Cancelable 13 | , InvocableType { 14 | func invoke() 15 | } 16 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/Action/Action-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Action : NSObject 3 | @end 4 | @implementation PodsDummy_Action 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/Action/Action-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/Action/Action-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double ActionVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char ActionVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/Action/Action.modulemap: -------------------------------------------------------------------------------- 1 | framework module Action { 2 | umbrella header "Action-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_RxClassroom : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_RxClassroom 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_RxClassroomVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_RxClassroomVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_RxClassroom { 2 | umbrella header "Pods-RxClassroom-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxCocoa : NSObject 3 | @end 4 | @implementation PodsDummy_RxCocoa 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "RxCocoa.h" 4 | #import "_RX.h" 5 | #import "_RXDelegateProxy.h" 6 | #import "_RXKVOObserver.h" 7 | #import "_RXObjCRuntime.h" 8 | 9 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 10 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 11 | 12 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/RxCocoa/RxCocoa.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/RxCocoa/RxCocoa.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxCocoa 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/RxSwift/RxSwift-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwift : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwift 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double RxSwiftVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/RxSwift/RxSwift.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | umbrella header "RxSwift-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep6/Pods/Target Support Files/RxSwift/RxSwift.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxSwift 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /RxClassRoomStep6/RxClassroom.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep6/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep6/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep6/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep6/RxClassroom.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep6/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep6/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep6/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep6/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep6/RxClassroom/Weather.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Weather.swift 3 | // RxClassroom 4 | // 5 | 6 | import Foundation 7 | 8 | enum Sky { 9 | case Clear 10 | case Windy 11 | case PartlyCloudy 12 | case Cloudy 13 | case Rainy 14 | } 15 | 16 | struct Conditions { 17 | let time : NSDate 18 | let temperature : Int 19 | let sky : Sky 20 | } 21 | 22 | struct Forecast { 23 | let city : String 24 | let forecast : [Conditions] 25 | } 26 | -------------------------------------------------------------------------------- /RxClassRoomStep6/RxClassroom/WeatherServiceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WeatherService.swift 3 | // RxClassroom 4 | // 5 | 6 | import Foundation 7 | import RxSwift 8 | 9 | protocol WeatherServiceType { 10 | 11 | func getForecast(city: String) -> Observable 12 | 13 | } 14 | -------------------------------------------------------------------------------- /RxClassRoomStep7/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep7/.DS_Store -------------------------------------------------------------------------------- /RxClassRoomStep7/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep7/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /RxClassRoomStep7/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep7/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep7/.idea/xcode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target :RxClassroom do 4 | pod 'RxSwift' 5 | pod 'RxCocoa' 6 | pod 'Action' 7 | end 8 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxCocoa/RxCocoa/Common/Observables/Implementations/DeallocObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DeallocObservable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | class DeallocObservable { 15 | let _subject = ReplaySubject.create(bufferSize: 1) 16 | 17 | init() { 18 | } 19 | 20 | deinit { 21 | _subject.on(.Next(())) 22 | _subject.on(.Completed) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxCocoa/RxCocoa/Common/_RX.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RX.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "_RX.h" 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxCocoa/RxCocoa/Common/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface _RXDelegateProxy : NSObject 12 | 13 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 14 | 15 | -(void)_setForwardToDelegate:(id)forwardToDelegate retainDelegate:(BOOL)retainDelegate; 16 | 17 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 18 | 19 | -(void)interceptedSelector:(SEL)selector withArguments:(NSArray*)arguments; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxCocoa/RxCocoa/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxCocoa/RxCocoa/iOS/Events/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ItemEvents.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/20/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | #if os(iOS) || os(tvOS) 13 | public typealias ItemMovedEvent = (sourceIndex: NSIndexPath, destinationIndex: NSIndexPath) 14 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 15 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 16 | #endif -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Cancelable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 3/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Represents disposable resource with state tracking. 13 | */ 14 | public protocol Cancelable : Disposable { 15 | /** 16 | - returns: Was resource disposed. 17 | */ 18 | var disposed: Bool { get } 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LockOwnerType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol LockOwnerType : class, Lock { 12 | var _lock: NSRecursiveLock { get } 13 | } 14 | 15 | extension LockOwnerType { 16 | func lock() { 17 | _lock.lock() 18 | } 19 | 20 | func unlock() { 21 | _lock.unlock() 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedDisposeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedDisposeType : class, Disposable, Lock { 12 | func _synchronized_dispose() 13 | } 14 | 15 | extension SynchronizedDisposeType { 16 | func synchronizedDispose() { 17 | lock(); defer { unlock() } 18 | _synchronized_dispose() 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedOnType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedOnType : class, ObserverType, Lock { 12 | func _synchronized_on(event: Event) 13 | } 14 | 15 | extension SynchronizedOnType { 16 | func synchronizedOn(event: Event) { 17 | lock(); defer { unlock() } 18 | _synchronized_on(event) 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUnsubscribeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedUnsubscribeType : class { 12 | associatedtype DisposeKey 13 | 14 | func synchronizedUnsubscribe(disposeKey: DisposeKey) 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Respresents a disposable resource. 12 | public protocol Disposable { 13 | /// Dispose resource. 14 | func dispose() 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DisposeBase.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 4/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Base class for all disposables. 13 | */ 14 | public class DisposeBase { 15 | init() { 16 | #if TRACE_RESOURCES 17 | AtomicIncrement(&resourceCount) 18 | #endif 19 | } 20 | 21 | deinit { 22 | #if TRACE_RESOURCES 23 | AtomicDecrement(&resourceCount) 24 | #endif 25 | } 26 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Disposables/NAryDisposable.swift: -------------------------------------------------------------------------------- 1 | // This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project 2 | // 3 | // NAryDisposable.swift 4 | // RxSwift 5 | // 6 | // Created by Krunoslav Zaher on 8/20/15. 7 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 8 | // 9 | 10 | import Foundation 11 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Disposables/StableCompositeDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StableCompositeDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 6/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public final class StableCompositeDisposable { 12 | public static func create(disposable1: Disposable, _ disposable2: Disposable) -> Disposable { 13 | return BinaryDisposable(disposable1, disposable2) 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubscriptionDisposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct SubscriptionDisposable : Disposable { 12 | private let _key: T.DisposeKey 13 | private weak var _owner: T? 14 | 15 | init(owner: T, key: T.DisposeKey) { 16 | _owner = owner 17 | _key = key 18 | } 19 | 20 | func dispose() { 21 | _owner?.synchronizedUnsubscribe(_key) 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Observables/Implementations/Empty.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Empty.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Empty : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | observer.on(.Completed) 14 | return NopDisposable.instance 15 | } 16 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Observables/Implementations/Error.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Error : Producer { 12 | private let _error: ErrorType 13 | 14 | init(error: ErrorType) { 15 | _error = error 16 | } 17 | 18 | override func subscribe(observer: O) -> Disposable { 19 | observer.on(.Error(_error)) 20 | return NopDisposable.instance 21 | } 22 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Observables/Implementations/Never.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Never.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Never : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | return NopDisposable.instance 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Schedulers/Internal/AnonymousInvocable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousInvocable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct AnonymousInvocable : InvocableType { 12 | private let _action: () -> () 13 | 14 | init(_ action: () -> ()) { 15 | _action = action 16 | } 17 | 18 | func invoke() { 19 | _action() 20 | } 21 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableScheduledItem.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct InvocableScheduledItem : InvocableType { 12 | 13 | let _invocable: I 14 | let _state: I.Value 15 | 16 | init(invocable: I, state: I.Value) { 17 | _invocable = invocable 18 | _state = state 19 | } 20 | 21 | func invoke() { 22 | _invocable.invoke(_state) 23 | } 24 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol InvocableType { 12 | func invoke() 13 | } 14 | 15 | protocol InvocableWithValueType { 16 | associatedtype Value 17 | 18 | func invoke(value: Value) 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItemType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol ScheduledItemType 12 | : Cancelable 13 | , InvocableType { 14 | func invoke() 15 | } 16 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/Action/Action-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Action : NSObject 3 | @end 4 | @implementation PodsDummy_Action 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/Action/Action-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/Action/Action-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double ActionVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char ActionVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/Action/Action.modulemap: -------------------------------------------------------------------------------- 1 | framework module Action { 2 | umbrella header "Action-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_RxClassroom : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_RxClassroom 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_RxClassroomVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_RxClassroomVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_RxClassroom { 2 | umbrella header "Pods-RxClassroom-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxCocoa : NSObject 3 | @end 4 | @implementation PodsDummy_RxCocoa 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "RxCocoa.h" 4 | #import "_RX.h" 5 | #import "_RXDelegateProxy.h" 6 | #import "_RXKVOObserver.h" 7 | #import "_RXObjCRuntime.h" 8 | 9 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 10 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 11 | 12 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/RxCocoa/RxCocoa.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/RxSwift/RxSwift-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwift : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwift 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double RxSwiftVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/RxSwift/RxSwift.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | umbrella header "RxSwift-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep7/Pods/Target Support Files/RxSwift/RxSwift.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxSwift 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /RxClassRoomStep7/RxClassroom.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep7/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep7/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep7/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep7/RxClassroom.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep7/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep7/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep7/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep7/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep7/RxClassroom/Weather.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Weather.swift 3 | // RxClassroom 4 | // 5 | 6 | import Foundation 7 | 8 | enum Sky { 9 | case Clear 10 | case Windy 11 | case PartlyCloudy 12 | case Cloudy 13 | case Rainy 14 | } 15 | 16 | struct Conditions { 17 | let time : NSDate 18 | let temperature : Int 19 | let sky : Sky 20 | } 21 | 22 | struct Forecast { 23 | let city : String 24 | let forecast : [Conditions] 25 | } 26 | -------------------------------------------------------------------------------- /RxClassRoomStep7/RxClassroom/WeatherServiceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WeatherService.swift 3 | // RxClassroom 4 | // 5 | 6 | import Foundation 7 | import RxSwift 8 | 9 | protocol WeatherServiceType { 10 | 11 | func getForecast(city: String) -> Observable 12 | 13 | } 14 | -------------------------------------------------------------------------------- /RxClassRoomStep8/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep8/.DS_Store -------------------------------------------------------------------------------- /RxClassRoomStep8/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep8/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /RxClassRoomStep8/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep8/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep8/.idea/xcode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target :RxClassroom do 4 | pod 'RxSwift' 5 | pod 'RxCocoa' 6 | pod 'Action' 7 | end 8 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Action (1.3.0): 3 | - RxCocoa (~> 2.6) 4 | - RxSwift (~> 2.6) 5 | - RxCocoa (2.6.0): 6 | - RxSwift (~> 2.5) 7 | - RxSwift (2.6.0) 8 | 9 | DEPENDENCIES: 10 | - Action 11 | - RxCocoa 12 | - RxSwift 13 | 14 | SPEC CHECKSUMS: 15 | Action: 09c900c05bfef2f422374dc97790429bddbd1bbc 16 | RxCocoa: 89ab00d5753502520227940e3a0e0a0413683c6b 17 | RxSwift: 77f3a0b15324baa7a1c9bfa9f199648a82424e26 18 | 19 | PODFILE CHECKSUM: 9a6b803cc55a7ac1457558f1794ed497be7611e8 20 | 21 | COCOAPODS: 1.0.1 22 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxCocoa/RxCocoa/Common/Observables/Implementations/DeallocObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DeallocObservable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !RX_NO_MODULE 11 | import RxSwift 12 | #endif 13 | 14 | class DeallocObservable { 15 | let _subject = ReplaySubject.create(bufferSize: 1) 16 | 17 | init() { 18 | } 19 | 20 | deinit { 21 | _subject.on(.Next(())) 22 | _subject.on(.Completed) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxCocoa/RxCocoa/Common/_RX.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RX.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "_RX.h" 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxCocoa/RxCocoa/Common/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface _RXDelegateProxy : NSObject 12 | 13 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 14 | 15 | -(void)_setForwardToDelegate:(id)forwardToDelegate retainDelegate:(BOOL)retainDelegate; 16 | 17 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 18 | 19 | -(void)interceptedSelector:(SEL)selector withArguments:(NSArray*)arguments; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxCocoa/RxCocoa/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxCocoa/RxCocoa/iOS/Events/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ItemEvents.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/20/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | #if os(iOS) || os(tvOS) 13 | public typealias ItemMovedEvent = (sourceIndex: NSIndexPath, destinationIndex: NSIndexPath) 14 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 15 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath) 16 | #endif -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Cancelable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 3/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Represents disposable resource with state tracking. 13 | */ 14 | public protocol Cancelable : Disposable { 15 | /** 16 | - returns: Was resource disposed. 17 | */ 18 | var disposed: Bool { get } 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LockOwnerType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol LockOwnerType : class, Lock { 12 | var _lock: NSRecursiveLock { get } 13 | } 14 | 15 | extension LockOwnerType { 16 | func lock() { 17 | _lock.lock() 18 | } 19 | 20 | func unlock() { 21 | _lock.unlock() 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedDisposeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedDisposeType : class, Disposable, Lock { 12 | func _synchronized_dispose() 13 | } 14 | 15 | extension SynchronizedDisposeType { 16 | func synchronizedDispose() { 17 | lock(); defer { unlock() } 18 | _synchronized_dispose() 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedOnType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedOnType : class, ObserverType, Lock { 12 | func _synchronized_on(event: Event) 13 | } 14 | 15 | extension SynchronizedOnType { 16 | func synchronizedOn(event: Event) { 17 | lock(); defer { unlock() } 18 | _synchronized_on(event) 19 | } 20 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUnsubscribeType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol SynchronizedUnsubscribeType : class { 12 | associatedtype DisposeKey 13 | 14 | func synchronizedUnsubscribe(disposeKey: DisposeKey) 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Respresents a disposable resource. 12 | public protocol Disposable { 13 | /// Dispose resource. 14 | func dispose() 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DisposeBase.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 4/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Base class for all disposables. 13 | */ 14 | public class DisposeBase { 15 | init() { 16 | #if TRACE_RESOURCES 17 | AtomicIncrement(&resourceCount) 18 | #endif 19 | } 20 | 21 | deinit { 22 | #if TRACE_RESOURCES 23 | AtomicDecrement(&resourceCount) 24 | #endif 25 | } 26 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Disposables/NAryDisposable.swift: -------------------------------------------------------------------------------- 1 | // This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project 2 | // 3 | // NAryDisposable.swift 4 | // RxSwift 5 | // 6 | // Created by Krunoslav Zaher on 8/20/15. 7 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 8 | // 9 | 10 | import Foundation 11 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Disposables/StableCompositeDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StableCompositeDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 6/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public final class StableCompositeDisposable { 12 | public static func create(disposable1: Disposable, _ disposable2: Disposable) -> Disposable { 13 | return BinaryDisposable(disposable1, disposable2) 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubscriptionDisposable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct SubscriptionDisposable : Disposable { 12 | private let _key: T.DisposeKey 13 | private weak var _owner: T? 14 | 15 | init(owner: T, key: T.DisposeKey) { 16 | _owner = owner 17 | _key = key 18 | } 19 | 20 | func dispose() { 21 | _owner?.synchronizedUnsubscribe(_key) 22 | } 23 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Observables/Implementations/Empty.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Empty.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Empty : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | observer.on(.Completed) 14 | return NopDisposable.instance 15 | } 16 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Observables/Implementations/Error.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Error : Producer { 12 | private let _error: ErrorType 13 | 14 | init(error: ErrorType) { 15 | _error = error 16 | } 17 | 18 | override func subscribe(observer: O) -> Disposable { 19 | observer.on(.Error(_error)) 20 | return NopDisposable.instance 21 | } 22 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Observables/Implementations/Never.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Never.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Never : Producer { 12 | override func subscribe(observer: O) -> Disposable { 13 | return NopDisposable.instance 14 | } 15 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Schedulers/Internal/AnonymousInvocable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousInvocable.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct AnonymousInvocable : InvocableType { 12 | private let _action: () -> () 13 | 14 | init(_ action: () -> ()) { 15 | _action = action 16 | } 17 | 18 | func invoke() { 19 | _action() 20 | } 21 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableScheduledItem.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct InvocableScheduledItem : InvocableType { 12 | 13 | let _invocable: I 14 | let _state: I.Value 15 | 16 | init(invocable: I, state: I.Value) { 17 | _invocable = invocable 18 | _state = state 19 | } 20 | 21 | func invoke() { 22 | _invocable.invoke(_state) 23 | } 24 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol InvocableType { 12 | func invoke() 13 | } 14 | 15 | protocol InvocableWithValueType { 16 | associatedtype Value 17 | 18 | func invoke(value: Value) 19 | } -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItemType.swift 3 | // Rx 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol ScheduledItemType 12 | : Cancelable 13 | , InvocableType { 14 | func invoke() 15 | } 16 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/Action/Action-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Action : NSObject 3 | @end 4 | @implementation PodsDummy_Action 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/Action/Action-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/Action/Action-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double ActionVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char ActionVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/Action/Action.modulemap: -------------------------------------------------------------------------------- 1 | framework module Action { 2 | umbrella header "Action-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_RxClassroom : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_RxClassroom 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_RxClassroomVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_RxClassroomVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/Pods-RxClassroom/Pods-RxClassroom.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_RxClassroom { 2 | umbrella header "Pods-RxClassroom-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxCocoa : NSObject 3 | @end 4 | @implementation PodsDummy_RxCocoa 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "RxCocoa.h" 4 | #import "_RX.h" 5 | #import "_RXDelegateProxy.h" 6 | #import "_RXKVOObserver.h" 7 | #import "_RXObjCRuntime.h" 8 | 9 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 10 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 11 | 12 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/RxCocoa/RxCocoa.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/RxSwift/RxSwift-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwift : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwift 5 | @end 6 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double RxSwiftVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/RxSwift/RxSwift.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | umbrella header "RxSwift-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /RxClassRoomStep8/Pods/Target Support Files/RxSwift/RxSwift.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RxSwift 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /RxClassRoomStep8/RxClassroom.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxClassRoomStep8/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep8/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep8/RxClassroom.xcodeproj/project.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep8/RxClassroom.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /RxClassRoomStep8/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrenchKit/RxClassroom/60ec25f8bd120e938c84392177d3afd095f08cfd/RxClassRoomStep8/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /RxClassRoomStep8/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep8/RxClassroom.xcworkspace/xcuserdata/fpillet.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxClassRoomStep8/RxClassroom/Weather.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Weather.swift 3 | // RxClassroom 4 | // 5 | 6 | import Foundation 7 | 8 | enum Sky { 9 | case Clear 10 | case Windy 11 | case PartlyCloudy 12 | case Cloudy 13 | case Rainy 14 | } 15 | 16 | struct Conditions { 17 | let time : NSDate 18 | let temperature : Int 19 | let sky : Sky 20 | } 21 | 22 | struct Forecast { 23 | let city : String 24 | let forecast : [Conditions] 25 | } 26 | -------------------------------------------------------------------------------- /RxClassRoomStep8/RxClassroom/WeatherServiceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WeatherService.swift 3 | // RxClassroom 4 | // 5 | 6 | import Foundation 7 | import RxSwift 8 | 9 | protocol WeatherServiceType { 10 | 11 | func getForecast(city: String) -> Observable 12 | 13 | } 14 | --------------------------------------------------------------------------------