builds ios, ios rx cocoa and ios rx blocking

This commit is contained in:
Jamie Pinkham 2016-06-17 23:19:16 -07:00
parent 0e38ecbc87
commit c4cf2e0d12
252 changed files with 3084 additions and 3058 deletions

View File

@ -3108,8 +3108,15 @@
LastUpgradeCheck = 0720;
ORGANIZATIONNAME = "Krunoslav Zaher";
TargetAttributes = {
C80938F51B8A71760088E94D = {
LastSwiftMigration = 0800;
};
C8093B4B1B8A71F00088E94D = {
LastSwiftMigration = 0800;
};
C83508C21C386F6F0027C24C = {
CreatedOnToolsVersion = 7.2;
LastSwiftMigration = 0800;
};
C83509831C38740E0027C24C = {
CreatedOnToolsVersion = 7.2;
@ -3120,8 +3127,12 @@
C85BA04A1C3878740075D68E = {
CreatedOnToolsVersion = 7.2;
};
C88FA4FD1C25C44800CCFEA4 = {
LastSwiftMigration = 0800;
};
C8A56AD61AD7424700B4673B = {
CreatedOnToolsVersion = 6.3;
LastSwiftMigration = 0800;
};
D2138C741BB9BE9800339B5C = {
CreatedOnToolsVersion = 7.1;
@ -4756,6 +4767,7 @@
PRODUCT_NAME = RxCocoa;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
};
name = Debug;
};
@ -4773,6 +4785,7 @@
PRODUCT_NAME = RxCocoa;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
};
name = Release;
};
@ -4790,6 +4803,7 @@
PRODUCT_NAME = RxCocoa;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
};
name = "Release-Tests";
};
@ -4864,6 +4878,7 @@
PRODUCT_NAME = RxBlocking;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
};
name = Debug;
};
@ -4881,6 +4896,7 @@
PRODUCT_NAME = RxBlocking;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
};
name = Release;
};
@ -4898,6 +4914,7 @@
PRODUCT_NAME = RxBlocking;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
};
name = "Release-Tests";
};
@ -4973,6 +4990,7 @@
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SWIFT_OBJC_BRIDGING_HEADER = "Tests/RxCocoaTests/RxTests-iOS-Bridging-Header.h";
SWIFT_VERSION = 3.0;
};
name = Debug;
};
@ -4986,6 +5004,7 @@
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SWIFT_OBJC_BRIDGING_HEADER = "Tests/RxCocoaTests/RxTests-iOS-Bridging-Header.h";
SWIFT_VERSION = 3.0;
};
name = Release;
};
@ -4999,6 +5018,7 @@
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SWIFT_OBJC_BRIDGING_HEADER = "Tests/RxCocoaTests/RxTests-iOS-Bridging-Header.h";
SWIFT_VERSION = 3.0;
};
name = "Release-Tests";
};
@ -5216,6 +5236,7 @@
PRODUCT_NAME = RxSwift;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
};
name = "Release-Tests";
};
@ -5294,6 +5315,7 @@
PRODUCT_NAME = RxTests;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
};
name = Debug;
};
@ -5315,6 +5337,7 @@
PRODUCT_NAME = RxTests;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
};
name = Release;
};
@ -5336,6 +5359,7 @@
PRODUCT_NAME = RxTests;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
};
name = "Release-Tests";
};
@ -5662,6 +5686,7 @@
PRODUCT_NAME = RxSwift;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
};
name = Debug;
};
@ -5679,6 +5704,7 @@
PRODUCT_NAME = RxSwift;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
};
name = Release;
};

View File

@ -34,13 +34,13 @@ extension BlockingObservable {
return
}
switch e {
case .Next(let element):
case .next(let element):
elements.append(element)
case .Error(let e):
case .error(let e):
error = e
d.dispose()
lock.stop()
case .Completed:
case .completed:
d.dispose()
lock.stop()
}
@ -83,12 +83,12 @@ extension BlockingObservable {
}
switch e {
case .Next(let e):
case .next(let e):
if element == nil {
element = e
}
break
case .Error(let e):
case .error(let e):
error = e
default:
break
@ -134,10 +134,10 @@ extension BlockingObservable {
return
}
switch e {
case .Next(let e):
case .next(let e):
element = e
return
case .Error(let e):
case .error(let e):
error = e
default:
break
@ -180,7 +180,7 @@ extension BlockingObservable {
- parameter predicate: A function to test each source element for a condition.
- returns: Returns the only element of an sequence that satisfies the condition in the predicate, and reports an error if there is not exactly one element in the sequence.
*/
public func single(predicate: (E) throws -> Bool) throws -> E? {
public func single(_ predicate: (E) throws -> Bool) throws -> E? {
var element: E?
var error: ErrorProtocol?
@ -195,7 +195,7 @@ extension BlockingObservable {
return
}
switch e {
case .Next(let e):
case .next(let e):
do {
if try !predicate(e) {
return
@ -203,7 +203,7 @@ extension BlockingObservable {
if element == nil {
element = e
} else {
throw RxError.MoreThanOneElement
throw RxError.moreThanOneElement
}
} catch (let err) {
error = err
@ -211,11 +211,11 @@ extension BlockingObservable {
lock.stop()
}
return
case .Error(let e):
case .error(let e):
error = e
case .Completed:
case .completed:
if element == nil {
error = RxError.NoElements
error = RxError.noElements
}
}

View File

@ -17,8 +17,8 @@ extension ObservableConvertibleType {
- returns: `BlockingObservable` version of `self`
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func toBlocking() -> BlockingObservable<E> {
return BlockingObservable(source: self.asObservable())
}
}
}

View File

@ -38,10 +38,10 @@ class RunLoopLock {
currentRunLoop = CFRunLoopGetCurrent()
}
func dispatch(action: () -> ()) {
CFRunLoopPerformBlock(currentRunLoop, kCFRunLoopDefaultMode) {
func dispatch(_ action: () -> ()) {
CFRunLoopPerformBlock(currentRunLoop, CFRunLoopMode.defaultMode as! CFTypeRef) {
if CurrentThreadScheduler.isScheduleRequired {
CurrentThreadScheduler.instance.schedule(state: ()) { _ in
_ = CurrentThreadScheduler.instance.schedule(()) { _ in
action()
return NopDisposable.instance
}
@ -57,7 +57,7 @@ class RunLoopLock {
if AtomicIncrement(&calledStop) != 1 {
return
}
CFRunLoopPerformBlock(currentRunLoop, kCFRunLoopDefaultMode) {
CFRunLoopPerformBlock(currentRunLoop, CFRunLoopMode.defaultMode as! CFTypeRef) {
CFRunLoopStop(self.currentRunLoop)
}
CFRunLoopWakeUp(currentRunLoop)

View File

@ -29,7 +29,7 @@ extension CLLocationManager {
Reactive wrapper for `delegate` message.
*/
public var rx_didUpdateLocations: Observable<[CLLocation]> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManager(_:didUpdate:)))
return rx_delegate.observe(#selector(CLLocationManagerDelegate.locationManager(_:didUpdateLocations:)))
.map { a in
return try castOrThrow([CLLocation].self, a[1])
}
@ -39,7 +39,7 @@ extension CLLocationManager {
Reactive wrapper for `delegate` message.
*/
public var rx_didFailWithError: Observable<NSError> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManager(_:didFailWithError:)))
return rx_delegate.observe(#selector(CLLocationManagerDelegate.locationManager(_:didFailWithError:)))
.map { a in
return try castOrThrow(NSError.self, a[1])
}
@ -50,7 +50,7 @@ extension CLLocationManager {
Reactive wrapper for `delegate` message.
*/
public var rx_didFinishDeferredUpdatesWithError: Observable<NSError?> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManager(_:didFinishDeferredUpdatesWithError:)))
return rx_delegate.observe(#selector(CLLocationManagerDelegate.locationManager(_:didFinishDeferredUpdatesWithError:)))
.map { a in
return try castOptionalOrThrow(NSError.self, a[1])
}
@ -65,7 +65,7 @@ extension CLLocationManager {
Reactive wrapper for `delegate` message.
*/
public var rx_didPauseLocationUpdates: Observable<Void> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManagerDidPauseLocationUpdates(_:)))
return rx_delegate.observe(#selector(CLLocationManagerDelegate.locationManagerDidPauseLocationUpdates(_:)))
.map { _ in
return ()
}
@ -75,7 +75,7 @@ extension CLLocationManager {
Reactive wrapper for `delegate` message.
*/
public var rx_didResumeLocationUpdates: Observable<Void> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManagerDidResumeLocationUpdates(_:)))
return rx_delegate.observe( #selector(CLLocationManagerDelegate.locationManagerDidResumeLocationUpdates(_:)))
.map { _ in
return ()
}
@ -87,7 +87,7 @@ extension CLLocationManager {
Reactive wrapper for `delegate` message.
*/
public var rx_didUpdateHeading: Observable<CLHeading> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManager(_:didUpdate:)))
return rx_delegate.observe(#selector(CLLocationManagerDelegate.locationManager(_:didUpdateHeading:)))
.map { a in
return try castOrThrow(CLHeading.self, a[1])
}
@ -99,7 +99,7 @@ extension CLLocationManager {
Reactive wrapper for `delegate` message.
*/
public var rx_didEnterRegion: Observable<CLRegion> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManager(_:didEnter:)))
return rx_delegate.observe(#selector(CLLocationManagerDelegate.locationManager(_:didEnterRegion:)))
.map { a in
return try castOrThrow(CLRegion.self, a[1])
}
@ -109,7 +109,7 @@ extension CLLocationManager {
Reactive wrapper for `delegate` message.
*/
public var rx_didExitRegion: Observable<CLRegion> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManager(_:didExitRegion:)))
return rx_delegate.observe(#selector(CLLocationManagerDelegate.locationManager(_:didExitRegion:)))
.map { a in
return try castOrThrow(CLRegion.self, a[1])
}
@ -124,7 +124,7 @@ extension CLLocationManager {
*/
@available(OSX 10.10, *)
public var rx_didDetermineStateForRegion: Observable<(state: CLRegionState, region: CLRegion)> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManager(_:didDetermineState:for:)))
return rx_delegate.observe(#selector(CLLocationManagerDelegate.locationManager(_:didDetermineState:for:)))
.map { a in
let stateNumber = try castOrThrow(NSNumber.self, a[1])
let state = CLRegionState(rawValue: stateNumber.intValue) ?? CLRegionState.unknown
@ -137,7 +137,7 @@ extension CLLocationManager {
Reactive wrapper for `delegate` message.
*/
public var rx_monitoringDidFailForRegionWithError: Observable<(region: CLRegion?, error: NSError)> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManager(_:monitoringDidFailFor:withError:)))
return rx_delegate.observe(#selector(CLLocationManagerDelegate.locationManager(_:monitoringDidFailFor:withError:)))
.map { a in
let region = try castOptionalOrThrow(CLRegion.self, a[1])
let error = try castOrThrow(NSError.self, a[2])
@ -149,7 +149,7 @@ extension CLLocationManager {
Reactive wrapper for `delegate` message.
*/
public var rx_didStartMonitoringForRegion: Observable<CLRegion> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManager(_:didStartMonitoringFor:)))
return rx_delegate.observe(#selector(CLLocationManagerDelegate.locationManager(_:didStartMonitoringFor:)))
.map { a in
return try castOrThrow(CLRegion.self, a[1])
}
@ -165,7 +165,7 @@ extension CLLocationManager {
Reactive wrapper for `delegate` message.
*/
public var rx_didRangeBeaconsInRegion: Observable<(beacons: [CLBeacon], region: CLBeaconRegion)> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManager(_:didRangeBeacons:in:)))
return rx_delegate.observe(#selector(CLLocationManagerDelegate.locationManager(_:didRangeBeacons:in:)))
.map { a in
let beacons = try castOrThrow([CLBeacon].self, a[1])
let region = try castOrThrow(CLBeaconRegion.self, a[2])
@ -177,7 +177,7 @@ extension CLLocationManager {
Reactive wrapper for `delegate` message.
*/
public var rx_rangingBeaconsDidFailForRegionWithError: Observable<(region: CLBeaconRegion, error: NSError)> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManager(_:rangingBeaconsDidFailFor:withError:)))
return rx_delegate.observe(#selector(CLLocationManagerDelegate.locationManager(_:rangingBeaconsDidFailFor:withError:)))
.map { a in
let region = try castOrThrow(CLBeaconRegion.self, a[1])
let error = try castOrThrow(NSError.self, a[2])
@ -192,7 +192,7 @@ extension CLLocationManager {
*/
@available(iOS 8.0, *)
public var rx_didVisit: Observable<CLVisit> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManager(_:didVisit:)))
return rx_delegate.observe(#selector(CLLocationManagerDelegate.locationManager(_:didVisit:)))
.map { a in
return try castOrThrow(CLVisit.self, a[1])
}
@ -206,7 +206,7 @@ extension CLLocationManager {
Reactive wrapper for `delegate` message.
*/
public var rx_didChangeAuthorizationStatus: Observable<CLAuthorizationStatus> {
return rx_delegate.observe(selector: #selector(CLLocationManagerDelegate.locationManager(_:didChange:)))
return rx_delegate.observe(#selector(CLLocationManagerDelegate.locationManager(_:didChangeAuthorization:)))
.map { a in
let number = try castOrThrow(NSNumber.self, a[1])
return CLAuthorizationStatus(rawValue: Int32(number.intValue)) ?? .notDetermined

View File

@ -55,7 +55,7 @@ public struct ControlEvent<PropertyType> : ControlEventType {
- returns: Control event created with a observable sequence of events.
*/
public init<Ev: ObservableType where Ev.E == E>(events: Ev) {
_events = events.subscribeOn(scheduler: ConcurrentMainScheduler.instance)
_events = events.subscribeOn(ConcurrentMainScheduler.instance)
}
/**
@ -64,14 +64,14 @@ public struct ControlEvent<PropertyType> : ControlEventType {
- parameter observer: Observer to subscribe to events.
- returns: Disposable object that can be used to unsubscribe the observer from receiving control events.
*/
public func subscribe<O : ObserverType where O.E == E>(observer: O) -> Disposable {
return _events.subscribe(observer: observer)
public func subscribe<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
return _events.subscribe(observer)
}
/**
- returns: `Observable` interface.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func asObservable() -> Observable<E> {
return _events
}
@ -79,7 +79,7 @@ public struct ControlEvent<PropertyType> : ControlEventType {
/**
- returns: `ControlEvent` interface.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func asControlEvent() -> ControlEvent<E> {
return self
}

View File

@ -60,7 +60,7 @@ public struct ControlProperty<PropertyType> : ControlPropertyType {
to property.
*/
public init<V: ObservableType, S: ObserverType where E == V.E, E == S.E>(values: V, valueSink: S) {
_values = values.subscribeOn(scheduler: ConcurrentMainScheduler.instance)
_values = values.subscribeOn(ConcurrentMainScheduler.instance)
_valueSink = valueSink.asObserver()
}
@ -70,14 +70,14 @@ public struct ControlProperty<PropertyType> : ControlPropertyType {
- parameter observer: Observer to subscribe to property values.
- returns: Disposable object that can be used to unsubscribe the observer from receiving control property values.
*/
public func subscribe<O : ObserverType where O.E == E>(observer: O) -> Disposable {
return _values.subscribe(observer: observer)
public func subscribe<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
return _values.subscribe(observer)
}
/**
- returns: `Observable` interface.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func asObservable() -> Observable<E> {
return _values
}
@ -85,7 +85,7 @@ public struct ControlProperty<PropertyType> : ControlPropertyType {
/**
- returns: `ControlProperty` interface.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func asControlProperty() -> ControlProperty<E> {
return self
}
@ -97,14 +97,14 @@ public struct ControlProperty<PropertyType> : ControlPropertyType {
- In case error is received, DEBUG buids raise fatal error, RELEASE builds log event to standard output.
- In case sequence completes, nothing happens.
*/
public func on(event: Event<E>) {
public func on(_ event: Event<E>) {
switch event {
case .Error(let error):
case .error(let error):
bindingErrorToInterface(error)
case .Next:
_valueSink.on(event: event)
case .Completed:
_valueSink.on(event: event)
case .next:
_valueSink.on(event)
case .completed:
_valueSink.on(event)
}
}
}

View File

@ -17,7 +17,7 @@ extension ControlEvent {
`ControlEvent` already can't fail, so no special case needs to be handled.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func asDriver() -> Driver<E> {
return self.asDriver { (error) -> Driver<E> in
#if DEBUG
@ -27,4 +27,4 @@ extension ControlEvent {
#endif
}
}
}
}

View File

@ -17,7 +17,7 @@ extension ControlProperty {
`ControlProperty` already can't fail, so no special case needs to be handled.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func asDriver() -> Driver<E> {
return self.asDriver { (error) -> Driver<E> in
#if DEBUG
@ -27,4 +27,4 @@ extension ControlProperty {
#endif
}
}
}
}

View File

@ -23,9 +23,9 @@ extension Driver {
- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func zip<O1: DriverConvertibleType, O2: DriverConvertibleType>
(source1: O1, _ source2: O2, resultSelector: (O1.E, O2.E) throws -> E)
(_ source1: O1, _ source2: O2, resultSelector: (O1.E, O2.E) throws -> E)
-> Driver<E> {
let source = Observable.zip(
source1.asDriver().asObservable(), source2.asDriver().asObservable(),
@ -43,9 +43,9 @@ extension Driver {
- parameter resultSelector: Function to invoke whenever any of the sources produces an element.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func combineLatest<O1: DriverConvertibleType, O2: DriverConvertibleType>
(source1: O1, _ source2: O2, resultSelector: (O1.E, O2.E) throws -> E)
(_ source1: O1, _ source2: O2, resultSelector: (O1.E, O2.E) throws -> E)
-> Driver<E> {
let source = Observable.combineLatest(
source1.asDriver().asObservable(), source2.asDriver().asObservable(),
@ -67,9 +67,9 @@ extension Driver {
- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func zip<O1: DriverConvertibleType, O2: DriverConvertibleType, O3: DriverConvertibleType>
(source1: O1, _ source2: O2, _ source3: O3, resultSelector: (O1.E, O2.E, O3.E) throws -> E)
(_ source1: O1, _ source2: O2, _ source3: O3, resultSelector: (O1.E, O2.E, O3.E) throws -> E)
-> Driver<E> {
let source = Observable.zip(
source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(),
@ -87,9 +87,9 @@ extension Driver {
- parameter resultSelector: Function to invoke whenever any of the sources produces an element.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func combineLatest<O1: DriverConvertibleType, O2: DriverConvertibleType, O3: DriverConvertibleType>
(source1: O1, _ source2: O2, _ source3: O3, resultSelector: (O1.E, O2.E, O3.E) throws -> E)
(_ source1: O1, _ source2: O2, _ source3: O3, resultSelector: (O1.E, O2.E, O3.E) throws -> E)
-> Driver<E> {
let source = Observable.combineLatest(
source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(),
@ -111,9 +111,9 @@ extension Driver {
- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func zip<O1: DriverConvertibleType, O2: DriverConvertibleType, O3: DriverConvertibleType, O4: DriverConvertibleType>
(source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, resultSelector: (O1.E, O2.E, O3.E, O4.E) throws -> E)
(_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, resultSelector: (O1.E, O2.E, O3.E, O4.E) throws -> E)
-> Driver<E> {
let source = Observable.zip(
source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(),
@ -131,9 +131,9 @@ extension Driver {
- parameter resultSelector: Function to invoke whenever any of the sources produces an element.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func combineLatest<O1: DriverConvertibleType, O2: DriverConvertibleType, O3: DriverConvertibleType, O4: DriverConvertibleType>
(source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, resultSelector: (O1.E, O2.E, O3.E, O4.E) throws -> E)
(_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, resultSelector: (O1.E, O2.E, O3.E, O4.E) throws -> E)
-> Driver<E> {
let source = Observable.combineLatest(
source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(),
@ -155,9 +155,9 @@ extension Driver {
- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func zip<O1: DriverConvertibleType, O2: DriverConvertibleType, O3: DriverConvertibleType, O4: DriverConvertibleType, O5: DriverConvertibleType>
(source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E) throws -> E)
(_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E) throws -> E)
-> Driver<E> {
let source = Observable.zip(
source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(),
@ -175,9 +175,9 @@ extension Driver {
- parameter resultSelector: Function to invoke whenever any of the sources produces an element.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func combineLatest<O1: DriverConvertibleType, O2: DriverConvertibleType, O3: DriverConvertibleType, O4: DriverConvertibleType, O5: DriverConvertibleType>
(source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E) throws -> E)
(_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E) throws -> E)
-> Driver<E> {
let source = Observable.combineLatest(
source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(),
@ -199,9 +199,9 @@ extension Driver {
- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func zip<O1: DriverConvertibleType, O2: DriverConvertibleType, O3: DriverConvertibleType, O4: DriverConvertibleType, O5: DriverConvertibleType, O6: DriverConvertibleType>
(source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E) throws -> E)
(_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E) throws -> E)
-> Driver<E> {
let source = Observable.zip(
source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(), source6.asDriver().asObservable(),
@ -219,9 +219,9 @@ extension Driver {
- parameter resultSelector: Function to invoke whenever any of the sources produces an element.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func combineLatest<O1: DriverConvertibleType, O2: DriverConvertibleType, O3: DriverConvertibleType, O4: DriverConvertibleType, O5: DriverConvertibleType, O6: DriverConvertibleType>
(source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E) throws -> E)
(_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E) throws -> E)
-> Driver<E> {
let source = Observable.combineLatest(
source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(), source6.asDriver().asObservable(),
@ -243,9 +243,9 @@ extension Driver {
- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func zip<O1: DriverConvertibleType, O2: DriverConvertibleType, O3: DriverConvertibleType, O4: DriverConvertibleType, O5: DriverConvertibleType, O6: DriverConvertibleType, O7: DriverConvertibleType>
(source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E) throws -> E)
(_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E) throws -> E)
-> Driver<E> {
let source = Observable.zip(
source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(), source6.asDriver().asObservable(), source7.asDriver().asObservable(),
@ -263,9 +263,9 @@ extension Driver {
- parameter resultSelector: Function to invoke whenever any of the sources produces an element.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func combineLatest<O1: DriverConvertibleType, O2: DriverConvertibleType, O3: DriverConvertibleType, O4: DriverConvertibleType, O5: DriverConvertibleType, O6: DriverConvertibleType, O7: DriverConvertibleType>
(source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E) throws -> E)
(_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E) throws -> E)
-> Driver<E> {
let source = Observable.combineLatest(
source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(), source6.asDriver().asObservable(), source7.asDriver().asObservable(),
@ -287,9 +287,9 @@ extension Driver {
- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func zip<O1: DriverConvertibleType, O2: DriverConvertibleType, O3: DriverConvertibleType, O4: DriverConvertibleType, O5: DriverConvertibleType, O6: DriverConvertibleType, O7: DriverConvertibleType, O8: DriverConvertibleType>
(source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E, O8.E) throws -> E)
(_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E, O8.E) throws -> E)
-> Driver<E> {
let source = Observable.zip(
source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(), source6.asDriver().asObservable(), source7.asDriver().asObservable(), source8.asDriver().asObservable(),
@ -307,9 +307,9 @@ extension Driver {
- parameter resultSelector: Function to invoke whenever any of the sources produces an element.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func combineLatest<O1: DriverConvertibleType, O2: DriverConvertibleType, O3: DriverConvertibleType, O4: DriverConvertibleType, O5: DriverConvertibleType, O6: DriverConvertibleType, O7: DriverConvertibleType, O8: DriverConvertibleType>
(source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E, O8.E) throws -> E)
(_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, resultSelector: (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E, O8.E) throws -> E)
-> Driver<E> {
let source = Observable.combineLatest(
source1.asDriver().asObservable(), source2.asDriver().asObservable(), source3.asDriver().asObservable(), source4.asDriver().asObservable(), source5.asDriver().asObservable(), source6.asDriver().asObservable(), source7.asDriver().asObservable(), source8.asDriver().asObservable(),

View File

@ -22,7 +22,7 @@ extension Driver {
- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func zip<<%= (Array(1...i).map { "O\($0): DriverConvertibleType" }).joinWithSeparator(", ") %>>
(<%= (Array(1...i).map { "source\($0): O\($0)" }).joinWithSeparator(", _ ") %>, resultSelector: (<%= (Array(1...i).map { "O\($0).E" }).joinWithSeparator(", ") %>) throws -> E)
-> Driver<E> {
@ -42,7 +42,7 @@ extension Driver {
- parameter resultSelector: Function to invoke whenever any of the sources produces an element.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func combineLatest<<%= (Array(1...i).map { "O\($0): DriverConvertibleType" }).joinWithSeparator(", ") %>>
(<%= (Array(1...i).map { "source\($0): O\($0)" }).joinWithSeparator(", _ ") %>, resultSelector: (<%= (Array(1...i).map { "O\($0).E" }).joinWithSeparator(", ") %>) throws -> E)
-> Driver<E> {
@ -55,4 +55,4 @@ extension Driver {
}
}
<% } %>
<% } %>

View File

@ -20,11 +20,11 @@ extension DriverConvertibleType {
- parameter selector: A transform function to apply to each source element.
- returns: An observable sequence whose elements are the result of invoking the transform function on each element of source.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func map<R>(selector: E -> R) -> Driver<R> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func map<R>(_ selector: (E) -> R) -> Driver<R> {
let source = self
.asObservable()
.map(selector: selector)
.map(selector)
return Driver<R>(source)
}
}
@ -37,11 +37,11 @@ extension DriverConvertibleType {
- parameter predicate: A function to test each source element for a condition.
- returns: An observable sequence that contains elements from the input sequence that satisfy the condition.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func filter(predicate: (E) -> Bool) -> Driver<E> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func filter(_ predicate: (E) -> Bool) -> Driver<E> {
let source = self
.asObservable()
.filter(predicate: predicate)
.filter(predicate)
return Driver(source)
}
}
@ -58,7 +58,7 @@ extension DriverConvertibleType where E : DriverConvertibleType {
- returns: The observable sequence that at any point in time produces the elements of the most recent inner observable sequence that has been received.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func switchLatest() -> Driver<E.E> {
let source: Observable<E.E> = self
.asObservable()
@ -80,12 +80,12 @@ extension DriverConvertibleType {
- returns: An observable sequence whose elements are the result of invoking the transform function on each element of source producing an
Observable of Observable sequences and that at any point in time produces the elements of the most recent inner observable sequence that has been received.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func flatMapLatest<R>(selector: (E) -> Driver<R>)
@warn_unused_result(message:"http://git.io/rxs.uo")
public func flatMapLatest<R>(_ selector: (E) -> Driver<R>)
-> Driver<R> {
let source: Observable<R> = self
.asObservable()
.flatMapLatest(selector: selector)
.flatMapLatest(selector)
return Driver<R>(source)
}
}
@ -100,12 +100,12 @@ extension DriverConvertibleType {
- parameter selector: A transform function to apply to element that was observed while no observable is executing in parallel.
- returns: An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence that was received while no other sequence was being calculated.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func flatMapFirst<R>(selector: (E) -> Driver<R>)
@warn_unused_result(message:"http://git.io/rxs.uo")
public func flatMapFirst<R>(_ selector: (E) -> Driver<R>)
-> Driver<R> {
let source: Observable<R> = self
.asObservable()
.flatMapFirst(selector: selector)
.flatMapFirst(selector)
return Driver<R>(source)
}
}
@ -119,8 +119,8 @@ extension DriverConvertibleType {
- parameter eventHandler: Action to invoke for each event in the observable sequence.
- returns: The source sequence with the side-effecting behavior applied.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func doOn(eventHandler: (Event<E>) -> Void)
@warn_unused_result(message:"http://git.io/rxs.uo")
public func doOn(_ eventHandler: (Event<E>) -> Void)
-> Driver<E> {
let source = self.asObservable()
.doOn(eventHandler: eventHandler)
@ -136,8 +136,8 @@ extension DriverConvertibleType {
- parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.
- returns: The source sequence with the side-effecting behavior applied.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func doOn(onNext: (E -> Void)? = nil, onError: (ErrorProtocol -> Void)? = nil, onCompleted: (() -> Void)? = nil)
@warn_unused_result(message:"http://git.io/rxs.uo")
public func doOn(_ onNext: ((E) -> Void)? = nil, onError: ((ErrorProtocol) -> Void)? = nil, onCompleted: (() -> Void)? = nil)
-> Driver<E> {
let source = self.asObservable()
.doOn(onNext: onNext, onError: onError, onCompleted: onCompleted)
@ -151,10 +151,10 @@ extension DriverConvertibleType {
- parameter onNext: Action to invoke for each element in the observable sequence.
- returns: The source sequence with the side-effecting behavior applied.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func doOnNext(onNext: (E -> Void))
@warn_unused_result(message:"http://git.io/rxs.uo")
public func doOnNext(_ onNext: ((E) -> Void))
-> Driver<E> {
return self.doOn(onNext: onNext)
return self.doOn(onNext)
}
/**
@ -163,8 +163,8 @@ extension DriverConvertibleType {
- parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.
- returns: The source sequence with the side-effecting behavior applied.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func doOnCompleted(onCompleted: (() -> Void))
@warn_unused_result(message:"http://git.io/rxs.uo")
public func doOnCompleted(_ onCompleted: (() -> Void))
-> Driver<E> {
return self.doOn(onCompleted: onCompleted)
}
@ -179,10 +179,10 @@ extension DriverConvertibleType {
- parameter identifier: Identifier that is printed together with event description to standard output.
- returns: An observable sequence whose events are printed to standard output.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func debug(identifier: String? = nil, file: String = #file, line: UInt = #line, function: String = #function) -> Driver<E> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func debug(_ identifier: String? = nil, file: String = #file, line: UInt = #line, function: String = #function) -> Driver<E> {
let source = self.asObservable()
.debug(identifier: identifier, file: file, line: line, function: function)
.debug(identifier, file: file, line: line, function: function)
return Driver(source)
}
}
@ -195,7 +195,7 @@ extension DriverConvertibleType where E: Equatable {
- returns: An observable sequence only containing the distinct contiguous elements, based on equality operator, from the source sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func distinctUntilChanged()
-> Driver<E> {
let source = self.asObservable()
@ -213,8 +213,8 @@ extension DriverConvertibleType {
- parameter keySelector: A function to compute the comparison key for each element.
- returns: An observable sequence only containing the distinct contiguous elements, based on a computed key value, from the source sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func distinctUntilChanged<K: Equatable>(keySelector: (E) -> K) -> Driver<E> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func distinctUntilChanged<K: Equatable>(_ keySelector: (E) -> K) -> Driver<E> {
let source = self.asObservable()
.distinctUntilChanged(keySelector: keySelector, comparer: { $0 == $1 })
return Driver(source)
@ -226,8 +226,8 @@ extension DriverConvertibleType {
- parameter comparer: Equality comparer for computed key values.
- returns: An observable sequence only containing the distinct contiguous elements, based on `comparer`, from the source sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func distinctUntilChanged(comparer: (lhs: E, rhs: E) -> Bool) -> Driver<E> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func distinctUntilChanged(_ comparer: (lhs: E, rhs: E) -> Bool) -> Driver<E> {
let source = self.asObservable()
.distinctUntilChanged(keySelector: { $0 }, comparer: comparer)
return Driver(source)
@ -240,8 +240,8 @@ extension DriverConvertibleType {
- parameter comparer: Equality comparer for computed key values.
- returns: An observable sequence only containing the distinct contiguous elements, based on a computed key value and the comparer, from the source sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func distinctUntilChanged<K>(keySelector: (E) -> K, comparer: (lhs: K, rhs: K) -> Bool) -> Driver<E> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func distinctUntilChanged<K>(_ keySelector: (E) -> K, comparer: (lhs: K, rhs: K) -> Bool) -> Driver<E> {
let source = self.asObservable()
.distinctUntilChanged(keySelector: keySelector, comparer: comparer)
return Driver(source)
@ -258,10 +258,10 @@ extension DriverConvertibleType {
- parameter selector: A transform function to apply to each element.
- returns: An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func flatMap<R>(selector: (E) -> Driver<R>) -> Driver<R> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func flatMap<R>(_ selector: (E) -> Driver<R>) -> Driver<R> {
let source = self.asObservable()
.flatMap(selector: selector)
.flatMap(selector)
return Driver<R>(source)
}
@ -276,7 +276,7 @@ extension DriverConvertibleType where E : DriverConvertibleType {
- parameter maxConcurrent: Maximum number of inner observable sequences being subscribed to concurrently.
- returns: The observable sequence that merges the elements of the observable sequences.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func merge() -> Driver<E.E> {
let source = self.asObservable()
.map { $0.asDriver() }
@ -289,12 +289,12 @@ extension DriverConvertibleType where E : DriverConvertibleType {
- returns: The observable sequence that merges the elements of the inner sequences.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func merge(maxConcurrent: Int)
@warn_unused_result(message:"http://git.io/rxs.uo")
public func merge(_ maxConcurrent: Int)
-> Driver<E.E> {
let source = self.asObservable()
.map { $0.asDriver() }
.merge(maxConcurrent: maxConcurrent)
.merge( maxConcurrent)
return Driver<E.E>(source)
}
}
@ -310,11 +310,11 @@ extension DriverConvertibleType {
- parameter dueTime: Throttling duration for each element.
- returns: The throttled sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func throttle(dueTime: RxTimeInterval)
@warn_unused_result(message:"http://git.io/rxs.uo")
public func throttle(_ dueTime: RxTimeInterval)
-> Driver<E> {
let source = self.asObservable()
.throttle(dueTime: dueTime, scheduler: driverObserveOnScheduler)
.throttle(dueTime, scheduler: driverObserveOnScheduler)
return Driver(source)
}
@ -327,11 +327,11 @@ extension DriverConvertibleType {
- parameter dueTime: Throttling duration for each element.
- returns: The throttled sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func debounce(dueTime: RxTimeInterval)
@warn_unused_result(message:"http://git.io/rxs.uo")
public func debounce(_ dueTime: RxTimeInterval)
-> Driver<E> {
let source = self.asObservable()
.debounce(dueTime: dueTime, scheduler: driverObserveOnScheduler)
.debounce(dueTime, scheduler: driverObserveOnScheduler)
return Driver(source)
}
@ -348,8 +348,8 @@ extension DriverConvertibleType {
- parameter accumulator: An accumulator function to be invoked on each element.
- returns: An observable sequence containing the accumulated values.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func scan<A>(seed: A, accumulator: (A, E) -> A)
@warn_unused_result(message:"http://git.io/rxs.uo")
public func scan<A>(_ seed: A, accumulator: (A, E) -> A)
-> Driver<A> {
let source = self.asObservable()
.scan(seed: seed, accumulator: accumulator)
@ -365,7 +365,7 @@ extension Sequence where Iterator.Element : DriverConvertibleType {
- returns: An observable sequence that contains the elements of each given sequence, in sequential order.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func concat()
-> Driver<Iterator.Element.E> {
let source = self.lazy.map { $0.asDriver().asObservable() }.concat()
@ -380,7 +380,7 @@ extension Collection where Iterator.Element : DriverConvertibleType {
- returns: An observable sequence that contains the elements of each given sequence, in sequential order.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func concat()
-> Driver<Generator.Element.E> {
let source = self.map { $0.asDriver().asObservable() }.concat()
@ -397,9 +397,9 @@ extension Collection where Iterator.Element : DriverConvertibleType {
- parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func zip<R>(resultSelector: [Generator.Element.E] throws -> R) -> Driver<R> {
let source = self.map { $0.asDriver().asObservable() }.zip(resultSelector: resultSelector)
@warn_unused_result(message:"http://git.io/rxs.uo")
public func zip<R>(_ resultSelector: ([Generator.Element.E]) throws -> R) -> Driver<R> {
let source = self.map { $0.asDriver().asObservable() }.zip(resultSelector)
return Driver<R>(source)
}
}
@ -413,9 +413,9 @@ extension Collection where Iterator.Element : DriverConvertibleType {
- parameter resultSelector: Function to invoke whenever any of the sources produces an element.
- returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func combineLatest<R>(resultSelector: [Generator.Element.E] throws -> R) -> Driver<R> {
let source = self.map { $0.asDriver().asObservable() }.combineLatest(resultSelector: resultSelector)
@warn_unused_result(message:"http://git.io/rxs.uo")
public func combineLatest<R>(_ resultSelector: ([Generator.Element.E]) throws -> R) -> Driver<R> {
let source = self.map { $0.asDriver().asObservable() }.combineLatest(resultSelector)
return Driver<R>(source)
}
}
@ -430,9 +430,9 @@ extension DriverConvertibleType {
- parameter resultSelector: Function to invoke for each element from the self combined with the latest element from the second source, if any.
- returns: An observable sequence containing the result of combining each element of the self with the latest element from the second source, if any, using the specified result selector function.
*/
public func withLatestFrom<SecondO: DriverConvertibleType, ResultType>(second: SecondO, resultSelector: (E, SecondO.E) -> ResultType) -> Driver<ResultType> {
public func withLatestFrom<SecondO: DriverConvertibleType, ResultType>(_ second: SecondO, resultSelector: (E, SecondO.E) -> ResultType) -> Driver<ResultType> {
let source = self.asObservable()
.withLatestFrom(second: second.asDriver(), resultSelector: resultSelector)
.withLatestFrom(second.asDriver(), resultSelector: resultSelector)
return Driver<ResultType>(source)
}
@ -443,9 +443,9 @@ extension DriverConvertibleType {
- parameter second: Second observable source.
- returns: An observable sequence containing the result of combining each element of the self with the latest element from the second source, if any, using the specified result selector function.
*/
public func withLatestFrom<SecondO: DriverConvertibleType>(second: SecondO) -> Driver<SecondO.E> {
public func withLatestFrom<SecondO: DriverConvertibleType>(_ second: SecondO) -> Driver<SecondO.E> {
let source = self.asObservable()
.withLatestFrom(second: second.asDriver())
.withLatestFrom(second.asDriver())
return Driver<SecondO.E>(source)
}
@ -462,11 +462,11 @@ extension DriverConvertibleType {
- parameter count: The number of elements to skip before returning the remaining elements.
- returns: An observable sequence that contains the elements that occur after the specified index in the input sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func skip(count: Int)
@warn_unused_result(message:"http://git.io/rxs.uo")
public func skip(_ count: Int)
-> Driver<E> {
let source = self.asObservable()
.skip(count: count)
.skip(count)
return Driver(source)
}
}
@ -482,12 +482,12 @@ extension DriverConvertibleType {
- parameter element: Element to prepend to the specified sequence.
- returns: The source sequence prepended with the specified values.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func startWith(element: E)
@warn_unused_result(message:"http://git.io/rxs.uo")
public func startWith(_ element: E)
-> Driver<E> {
let source = self.asObservable()
.startWith(elements: element)
return Driver(source)
}
}
}

View File

@ -21,9 +21,9 @@ extension DriverConvertibleType {
- returns: Disposable object that can be used to unsubscribe the observer from the subject.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func drive<O: ObserverType where O.E == E>(observer: O) -> Disposable {
public func drive<O: ObserverType where O.E == E>(_ observer: O) -> Disposable {
MainScheduler.ensureExecutingOnScheduler()
return self.asObservable().subscribe(observer: observer)
return self.asObservable().subscribe(observer)
}
/**
@ -33,8 +33,8 @@ extension DriverConvertibleType {
- returns: Disposable object that can be used to unsubscribe the observer from the variable.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func drive(variable: Variable<E>) -> Disposable {
return drive(onNext: { e in
public func drive(_ variable: Variable<E>) -> Disposable {
return drive({ e in
variable.value = e
})
}
@ -46,7 +46,7 @@ extension DriverConvertibleType {
- returns: Object representing subscription.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func drive<R>(transformation: Observable<E> -> R) -> R {
public func drive<R>(_ transformation: (Observable<E>) -> R) -> R {
MainScheduler.ensureExecutingOnScheduler()
return transformation(self.asObservable())
}
@ -64,7 +64,7 @@ extension DriverConvertibleType {
- returns: Object representing subscription.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func drive<R1, R2>(with: Observable<E> -> R1 -> R2, curriedArgument: R1) -> R2 {
public func drive<R1, R2>(_ with: (Observable<E>) -> (R1) -> R2, curriedArgument: R1) -> R2 {
MainScheduler.ensureExecutingOnScheduler()
return with(self.asObservable())(curriedArgument)
}
@ -82,9 +82,9 @@ extension DriverConvertibleType {
- returns: Subscription object used to unsubscribe from the observable sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func drive(onNext: ((E) -> Void)? = nil, onCompleted: (() -> Void)? = nil, onDisposed: (() -> Void)? = nil) -> Disposable {
public func drive(_ onNext: ((E) -> Void)? = nil, onCompleted: (() -> Void)? = nil, onDisposed: (() -> Void)? = nil) -> Disposable {
MainScheduler.ensureExecutingOnScheduler()
return self.asObservable().subscribe(onNext: onNext, onCompleted: onCompleted, onDisposed: onDisposed)
return self.asObservable().subscribe(onNext, onCompleted: onCompleted, onDisposed: onDisposed)
}
/**
@ -94,9 +94,9 @@ extension DriverConvertibleType {
- returns: Subscription object used to unsubscribe from the observable sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func driveNext(onNext: E -> Void) -> Disposable {
public func driveNext(_ onNext: (E) -> Void) -> Disposable {
MainScheduler.ensureExecutingOnScheduler()
return self.asObservable().subscribeNext(onNext: onNext)
return self.asObservable().subscribeNext(onNext)
}
}

View File

@ -19,12 +19,12 @@ public protocol DriverConvertibleType : ObservableConvertibleType {
/**
Converts self to `Driver`.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
func asDriver() -> Driver<E>
}
extension DriverConvertibleType {
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func asObservable() -> Observable<E> {
return asDriver().asObservable()
}
@ -75,7 +75,7 @@ public struct Driver<Element> : DriverConvertibleType {
/**
- returns: Built observable sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func asObservable() -> Observable<E> {
return _source
}
@ -83,7 +83,7 @@ public struct Driver<Element> : DriverConvertibleType {
/**
- returns: `self`
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func asDriver() -> Driver<E> {
return self
}
@ -97,9 +97,9 @@ extension Driver {
- returns: An observable sequence with no elements.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func empty() -> Driver<E> {
return Driver(raw: Observable.empty().subscribeOn(scheduler: driverSubscribeOnScheduler))
return Driver(Observable.empty().subscribeOn(driverSubscribeOnScheduler))
}
/**
@ -107,9 +107,9 @@ extension Driver {
- returns: An observable sequence whose observers will never get called.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func never() -> Driver<E> {
return Driver(raw: Observable.never().subscribeOn(scheduler: driverSubscribeOnScheduler))
return Driver(Observable.never().subscribeOn(driverSubscribeOnScheduler))
}
/**
@ -118,9 +118,9 @@ extension Driver {
- parameter element: Single element in the resulting observable sequence.
- returns: An observable sequence containing the single specified element.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public static func just(element: E) -> Driver<E> {
return Driver(raw: Observable.just(element).subscribeOn(scheduler: driverSubscribeOnScheduler))
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func just(_ element: E) -> Driver<E> {
return Driver(Observable.just(element).subscribeOn(driverSubscribeOnScheduler))
}
/**
@ -129,8 +129,8 @@ extension Driver {
- parameter observableFactory: Observable factory function to invoke for each observer that subscribes to the resulting sequence.
- returns: An observable sequence whose observers trigger an invocation of the given observable factory function.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public static func deferred(observableFactory: () -> Driver<E>)
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func deferred(_ observableFactory: () -> Driver<E>)
-> Driver<E> {
return Driver(Observable.deferred { observableFactory().asObservable() })
}
@ -143,9 +143,9 @@ extension Driver {
- parameter elements: Elements to generate.
- returns: The observable sequence whose elements are pulled from the given arguments.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public static func of(elements: E ...) -> Driver<E> {
let source = elements.toObservable(scheduler: driverSubscribeOnScheduler)
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func of(_ elements: E ...) -> Driver<E> {
let source = elements.toObservable(driverSubscribeOnScheduler)
return Driver(raw: source)
}
}
@ -159,10 +159,10 @@ extension Driver where Element : SignedInteger {
- parameter period: Period for producing the values in the resulting sequence.
- returns: An observable sequence that produces a value after each period.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public static func interval(period: RxTimeInterval)
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func interval(_ period: RxTimeInterval)
-> Driver<E> {
return Driver(Observable.interval(period: period, scheduler: driverObserveOnScheduler))
return Driver(Observable.interval(period, scheduler: driverObserveOnScheduler))
}
}
@ -178,10 +178,10 @@ extension Driver where Element: SignedInteger {
- parameter period: Period to produce subsequent values.
- returns: An observable sequence that produces a value after due time has elapsed and then each period.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public static func timer(dueTime: RxTimeInterval, period: RxTimeInterval)
@warn_unused_result(message:"http://git.io/rxs.uo")
public static func timer(_ dueTime: RxTimeInterval, period: RxTimeInterval)
-> Driver<E> {
return Driver(Observable.timer(dueTime: dueTime, period: period, scheduler: driverObserveOnScheduler))
return Driver(Observable.timer(dueTime, period: period, scheduler: driverObserveOnScheduler))
}
}
@ -191,7 +191,7 @@ extension Driver where Element: SignedInteger {
**This shouldn't be used in normal release builds.**
*/
public func driveOnScheduler(scheduler: SchedulerType, action: () -> ()) {
public func driveOnScheduler(_ scheduler: SchedulerType, action: () -> ()) {
let originalObserveOnScheduler = driverObserveOnScheduler
let originalSubscribeOnScheduler = driverSubscribeOnScheduler
@ -201,17 +201,17 @@ public func driveOnScheduler(scheduler: SchedulerType, action: () -> ()) {
action()
// If you remove this line , compiler buggy optimizations will change behavior of this code
_forceCompilerToStopDoingInsaneOptimizationsThatBreakCode(scheduler: driverObserveOnScheduler)
_forceCompilerToStopDoingInsaneOptimizationsThatBreakCode(scheduler: driverSubscribeOnScheduler)
_forceCompilerToStopDoingInsaneOptimizationsThatBreakCode(driverObserveOnScheduler)
_forceCompilerToStopDoingInsaneOptimizationsThatBreakCode(driverSubscribeOnScheduler)
// Scary, I know
driverObserveOnScheduler = originalObserveOnScheduler
driverSubscribeOnScheduler = originalSubscribeOnScheduler
}
func _forceCompilerToStopDoingInsaneOptimizationsThatBreakCode(scheduler: SchedulerType) {
func _forceCompilerToStopDoingInsaneOptimizationsThatBreakCode(_ scheduler: SchedulerType) {
let a: Int32 = 1
let b = 314 + Int32(rand() & 1)
let b = 314 + Int32(arc4random() & 1)
if a == b {
print(scheduler)
}

View File

@ -18,12 +18,12 @@ extension ObservableConvertibleType {
- parameter onErrorJustReturn: Element to return in case of error and after that complete the sequence.
- returns: Driving observable sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func asDriver(onErrorJustReturn: E) -> Driver<E> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func asDriver(_ onErrorJustReturn: E) -> Driver<E> {
let source = self
.asObservable()
.observeOn(scheduler: driverObserveOnScheduler)
.catchErrorJustReturn(element: onErrorJustReturn)
.observeOn(driverObserveOnScheduler)
.catchErrorJustReturn(onErrorJustReturn)
return Driver(source)
}
@ -33,11 +33,11 @@ extension ObservableConvertibleType {
- parameter onErrorDriveWith: Driver that continues to drive the sequence in case of error.
- returns: Driving observable sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func asDriver(onErrorDriveWith: Driver<E>) -> Driver<E> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func asDriver(_ onErrorDriveWith: Driver<E>) -> Driver<E> {
let source = self
.asObservable()
.observeOn(scheduler: driverObserveOnScheduler)
.observeOn(driverObserveOnScheduler)
.catchError { _ in
onErrorDriveWith.asObservable()
}
@ -50,14 +50,14 @@ extension ObservableConvertibleType {
- parameter onErrorRecover: Calculates driver that continues to drive the sequence in case of error.
- returns: Driving observable sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func asDriver(onErrorRecover: (error: ErrorProtocol) -> Driver<E>) -> Driver<E> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func asDriver(_ onErrorRecover: (error: ErrorProtocol) -> Driver<E>) -> Driver<E> {
let source = self
.asObservable()
.observeOn(scheduler: driverObserveOnScheduler)
.observeOn(driverObserveOnScheduler)
.catchError { error in
onErrorRecover(error: error).asObservable()
}
return Driver(source)
}
}
}

View File

@ -17,10 +17,10 @@ extension Variable {
- returns: Driving observable sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func asDriver() -> Driver<E> {
let source = self.asObservable()
.observeOn(scheduler: driverObserveOnScheduler)
.observeOn(driverObserveOnScheduler)
return Driver(source)
}
}
}

View File

@ -36,17 +36,17 @@ public class UIBindingObserver<UIElementType, Value where UIElementType: AnyObje
/**
Binds next element to owner view as described in `binding`.
*/
public func on(event: Event<Value>) {
public func on(_ event: Event<Value>) {
MainScheduler.ensureExecutingOnScheduler()
switch event {
case .Next(let element):
case .next(let element):
if let view = self.UIElement {
binding(view, element)
}
case .Error(let error):
case .error(let error):
bindingErrorToInterface(error)
case .Completed:
case .completed:
break
}
}

View File

@ -85,12 +85,12 @@ public class DelegateProxy : _RXDelegateProxy {
- parameter selector: Selector used to filter observed invocations of delegate methods.
- returns: Observable sequence of arguments passed to `selector` method.
*/
public func observe(selector: Selector) -> Observable<[AnyObject]> {
if hasWiredImplementationForSelector(selector) {
public func observe(_ selector: Selector) -> Observable<[AnyObject]> {
if hasWiredImplementation(for: selector) {
print("Delegate proxy is already implementing `\(selector)`, a more performant way of registering might exist.")
}
if !self.respondsToSelector(selector) {
if !self.responds(to: selector) {
rxFatalError("This class doesn't respond to selector \(selector)")
}
@ -109,7 +109,7 @@ public class DelegateProxy : _RXDelegateProxy {
// proxy
public override func interceptedSelector(_ selector: Selector, withArguments arguments: [AnyObject]!) {
subjectsForSelector[selector]?.on(.Next(arguments))
subjectsForSelector[selector]?.on(.next(arguments))
}
/**
@ -126,7 +126,7 @@ public class DelegateProxy : _RXDelegateProxy {
- returns: Initialized instance of `self`.
*/
public class func createProxyForObject(object: AnyObject) -> AnyObject {
public class func createProxyForObject(_ object: AnyObject) -> AnyObject {
return self.init(parentObject: object)
}
@ -136,7 +136,7 @@ public class DelegateProxy : _RXDelegateProxy {
- parameter object: Object that can have assigned delegate proxy.
- returns: Assigned delegate proxy or `nil` if no delegate proxy is assigned.
*/
public class func assignedProxyFor(object: AnyObject) -> AnyObject? {
public class func assignedProxyFor(_ object: AnyObject) -> AnyObject? {
let maybeDelegate: AnyObject? = objc_getAssociatedObject(object, self.delegateAssociatedObjectTag())
return castOptionalOrFatalError(maybeDelegate)
}
@ -147,8 +147,8 @@ public class DelegateProxy : _RXDelegateProxy {
- parameter object: Object that can have assigned delegate proxy.
- parameter proxy: Delegate proxy object to assign to `object`.
*/
public class func assignProxy(proxy: AnyObject, toObject object: AnyObject) {
precondition(proxy.isKindOfClass(self.classForCoder()))
public class func assignProxy(_ proxy: AnyObject, toObject object: AnyObject) {
precondition(proxy.isKind(of: self.classForCoder()))
objc_setAssociatedObject(object, self.delegateAssociatedObjectTag(), proxy, .OBJC_ASSOCIATION_RETAIN)
}
@ -160,8 +160,8 @@ public class DelegateProxy : _RXDelegateProxy {
- parameter forwardToDelegate: Reference of delegate that receives all messages through `self`.
- parameter retainDelegate: Should `self` retain `forwardToDelegate`.
*/
public func setForwardToDelegate(forwardToDelegate delegate: AnyObject?, retainDelegate: Bool) {
self._setForwardToDelegate(delegate, retainDelegate: retainDelegate)
public func setForwardToDelegate(_ delegate: AnyObject?, retainDelegate: Bool) {
self._setForward(toDelegate: delegate, retainDelegate: retainDelegate)
}
/**
@ -176,7 +176,7 @@ public class DelegateProxy : _RXDelegateProxy {
deinit {
for v in subjectsForSelector.values {
v.on(.Completed)
v.on(.completed)
}
#if TRACE_RESOURCES
OSAtomicDecrement32(&resourceCount)
@ -185,7 +185,7 @@ public class DelegateProxy : _RXDelegateProxy {
// MARK: Pointer
class func _pointer(p: UnsafePointer<Void>) -> UnsafePointer<Void> {
class func _pointer(_ p: UnsafePointer<Void>) -> UnsafePointer<Void> {
return p
}
}
}

View File

@ -87,7 +87,7 @@ public protocol DelegateProxyType : AnyObject {
/**
Creates new proxy for target object.
*/
static func createProxyForObject(object: AnyObject) -> AnyObject
static func createProxyForObject(_ object: AnyObject) -> AnyObject
/**
Returns assigned proxy for object.
@ -95,7 +95,7 @@ public protocol DelegateProxyType : AnyObject {
- parameter object: Object that can have assigned delegate proxy.
- returns: Assigned delegate proxy or `nil` if no delegate proxy is assigned.
*/
static func assignedProxyFor(object: AnyObject) -> AnyObject?
static func assignedProxyFor(_ object: AnyObject) -> AnyObject?
/**
Assigns proxy to object.
@ -103,7 +103,7 @@ public protocol DelegateProxyType : AnyObject {
- parameter object: Object that can have assigned delegate proxy.
- parameter proxy: Delegate proxy object to assign to `object`.
*/
static func assignProxy(proxy: AnyObject, toObject object: AnyObject)
static func assignProxy(_ proxy: AnyObject, toObject object: AnyObject)
/**
Returns designated delegate property for object.
@ -115,7 +115,7 @@ public protocol DelegateProxyType : AnyObject {
- parameter object: Object that has delegate property.
- returns: Value of delegate property.
*/
static func currentDelegateFor(object: AnyObject) -> AnyObject?
static func currentDelegateFor(_ object: AnyObject) -> AnyObject?
/**
Sets designated delegate property for object.
@ -127,7 +127,7 @@ public protocol DelegateProxyType : AnyObject {
- parameter toObject: Object that has delegate property.
- parameter delegate: Delegate value.
*/
static func setCurrentDelegate(delegate: AnyObject?, toObject object: AnyObject)
static func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject)
/**
Returns reference of normal delegate that receives all forwarded messages
@ -144,11 +144,11 @@ public protocol DelegateProxyType : AnyObject {
- parameter forwardToDelegate: Reference of delegate that receives all messages through `self`.
- parameter retainDelegate: Should `self` retain `forwardToDelegate`.
*/
func setForwardToDelegate(forwardToDelegate: AnyObject?, retainDelegate: Bool)
func setForwardToDelegate(_ forwardToDelegate: AnyObject?, retainDelegate: Bool)
}
@available(*, deprecated=2.5, renamed="DelegateProxyType.proxyForObject", message="You can just use normal static protocol extension. E.g. `RxScrollViewDelegateProxy.proxyForObject`")
public func proxyForObject<P: DelegateProxyType>(type: P.Type, _ object: AnyObject) -> P {
@available(*, deprecated:2.5, renamed:"DelegateProxyType.proxyForObject", message:"You can just use normal static protocol extension. E.g. `RxScrollViewDelegateProxy.proxyForObject`")
public func proxyForObject<P: DelegateProxyType>(_ type: P.Type, _ object: AnyObject) -> P {
return P.proxyForObject(object)
}
@ -172,7 +172,7 @@ extension DelegateProxyType {
}
}
*/
public static func proxyForObject(object: AnyObject) -> Self {
public static func proxyForObject(_ object: AnyObject) -> Self {
MainScheduler.ensureExecutingOnScheduler()
let maybeProxy = Self.assignedProxyFor(object) as? Self
@ -208,7 +208,7 @@ extension DelegateProxyType {
- parameter onProxyForObject: Object that has `delegate` property.
- returns: Disposable object that can be used to clear forward delegate.
*/
public static func installForwardDelegate(forwardDelegate: AnyObject, retainDelegate: Bool, onProxyForObject object: AnyObject) -> Disposable {
public static func installForwardDelegate(_ forwardDelegate: AnyObject, retainDelegate: Bool, onProxyForObject object: AnyObject) -> Disposable {
weak var weakForwardDelegate: AnyObject? = forwardDelegate
let proxy = Self.proxyForObject(object)
@ -241,7 +241,7 @@ extension DelegateProxyType {
}
extension ObservableType {
func subscribeProxyDataSourceForObject<P: DelegateProxyType>(object: AnyObject, dataSource: AnyObject, retainDataSource: Bool, binding: (P, Event<E>) -> Void)
func subscribeProxyDataSourceForObject<P: DelegateProxyType>(_ object: AnyObject, dataSource: AnyObject, retainDataSource: Bool, binding: (P, Event<E>) -> Void)
-> Disposable {
let proxy = P.proxyForObject(object)
let disposable = P.installForwardDelegate(dataSource, retainDelegate: retainDataSource, onProxyForObject: object)
@ -259,10 +259,10 @@ extension ObservableType {
binding(proxy, event)
switch event {
case .Error(let error):
case .error(let error):
bindingErrorToInterface(error)
disposable.dispose()
case .Completed:
case .completed:
disposable.dispose()
default:
break

View File

@ -15,7 +15,7 @@ extension Int : KVORepresentable {
Constructs `Self` using KVO value.
*/
public init?(KVOValue: KVOType) {
self.init(KVOValue.intValue)
self.init(KVOValue.int32Value)
}
}
@ -26,7 +26,7 @@ extension Int32 : KVORepresentable {
Constructs `Self` using KVO value.
*/
public init?(KVOValue: KVOType) {
self.init(KVOValue.intValue)
self.init(KVOValue.int32Value)
}
}
@ -90,4 +90,4 @@ extension RawRepresentable where RawValue: KVORepresentable {
self.init(rawValue: rawValue)
}
}
}

View File

@ -12,7 +12,7 @@ import Foundation
Simple logging settings for RxCocoa library.
*/
public struct Logging {
public typealias LogURLRequest = (NSURLRequest) -> Bool
public typealias LogURLRequest = (URLRequest) -> Bool
/**
Log URL requests to standard output in curl format.
@ -24,4 +24,4 @@ public struct Logging {
return false
#endif
}
}
}

View File

@ -35,7 +35,7 @@ extension NSLayoutConstraint {
@available(iOS 8, OSX 10.10, *)
public var rx_active: AnyObserver<Bool> {
return UIBindingObserver(UIElement: self) { constraint, value in
constraint.active = value
constraint.isActive = value
}.asObserver()
}
}

View File

@ -23,8 +23,8 @@ extension ObservableType {
- returns: Disposable object that can be used to unsubscribe the observer.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func bindTo<O: ObserverType where O.E == E>(observer: O) -> Disposable {
return self.subscribe(observer: observer)
public func bindTo<O: ObserverType where O.E == E>(_ observer: O) -> Disposable {
return self.subscribe(observer)
}
/**
@ -37,19 +37,19 @@ extension ObservableType {
- returns: Disposable object that can be used to unsubscribe the observer.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func bindTo(variable: Variable<E>) -> Disposable {
public func bindTo(_ variable: Variable<E>) -> Disposable {
return subscribe { e in
switch e {
case let .Next(element):
case let .next(element):
variable.value = element
case let .Error(error):
case let .error(error):
let error = "Binding error to variable: \(error)"
#if DEBUG
rxFatalError(error)
#else
print(error)
#endif
case .Completed:
case .completed:
break
}
}
@ -62,7 +62,7 @@ extension ObservableType {
- returns: Object representing subscription.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func bindTo<R>(binder: Self -> R) -> R {
public func bindTo<R>(_ binder: (Self) -> R) -> R {
return binder(self)
}
@ -79,7 +79,7 @@ extension ObservableType {
- returns: Object representing subscription.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func bindTo<R1, R2>(binder: Self -> R1 -> R2, curriedArgument: R1) -> R2 {
public func bindTo<R1, R2>(_ binder: (Self) -> (R1) -> R2, curriedArgument: R1) -> R2 {
return binder(self)(curriedArgument)
}
@ -94,8 +94,8 @@ extension ObservableType {
- returns: Subscription object used to unsubscribe from the observable sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func bindNext(onNext: E -> Void) -> Disposable {
return subscribe(onNext: onNext, onError: { error in
public func bindNext(_ onNext: (E) -> Void) -> Disposable {
return subscribe(onNext, onError: { error in
let error = "Binding error: \(error)"
#if DEBUG
rxFatalError(error)

View File

@ -45,9 +45,9 @@ class ControlTarget: RxTarget {
super.init()
control.addTarget(self, action: selector, forControlEvents: controlEvents)
control.addTarget(self, action: selector, for: controlEvents)
let method = self.methodForSelector(selector)
let method = self.method(for: selector)
if method == nil {
rxFatalError("Can't find method")
}
@ -71,7 +71,7 @@ class ControlTarget: RxTarget {
}
#endif
func eventHandler(sender: Control!) {
func eventHandler(_ sender: Control!) {
if let callback = self.callback, control = self.control {
callback(control)
}
@ -80,7 +80,7 @@ class ControlTarget: RxTarget {
override func dispose() {
super.dispose()
#if os(iOS) || os(tvOS)
self.control?.removeTarget(self, action: self.selector, forControlEvents: self.controlEvents)
self.control?.removeTarget(self, action: self.selector, for: self.controlEvents)
#elseif os(OSX)
self.control?.target = nil
self.control?.action = nil

View File

@ -12,13 +12,13 @@ import RxSwift
#endif
class DeallocObservable {
let _subject = ReplaySubject<Void>.create(bufferSize: 1)
let _subject = ReplaySubject<Void>.create(1)
init() {
}
deinit {
_subject.on(event: .Next(()))
_subject.on(event: .Completed)
_subject.on(.next(()))
_subject.on(.completed)
}
}

View File

@ -33,13 +33,13 @@ class KVOObservable<Element>
}
}
func subscribe<O : ObserverType where O.E == Element?>(observer: O) -> Disposable {
func subscribe<O : ObserverType where O.E == Element?>(_ observer: O) -> Disposable {
let observer = KVOObserver(parent: self) { (value) in
if value as? NSNull != nil {
observer.on(event: .Next(nil))
observer.on(.next(nil))
return
}
observer.on(event: .Next(value as? Element))
observer.on(.next(value as? Element))
}
return AnonymousDisposable(observer.dispose)
@ -49,18 +49,18 @@ class KVOObservable<Element>
#if !DISABLE_SWIZZLING
func observeWeaklyKeyPathFor(target: NSObject, keyPath: String, options: NSKeyValueObservingOptions) -> Observable<AnyObject?> {
func observeWeaklyKeyPathFor(_ target: NSObject, keyPath: String, options: NSKeyValueObservingOptions) -> Observable<AnyObject?> {
let components = keyPath.components(separatedBy: ".").filter { $0 != "self" }
let observable = observeWeaklyKeyPathFor(target: target, keyPathSections: components, options: options)
.finishWithNilWhenDealloc(target: target)
let observable = observeWeaklyKeyPathFor(target, keyPathSections: components, options: options)
.finishWithNilWhenDealloc(target)
if !options.intersect(.initial).isEmpty {
if !options.intersection(.initial).isEmpty {
return observable
}
else {
return observable
.skip(count: 1)
.skip(1)
}
}
@ -68,12 +68,12 @@ func observeWeaklyKeyPathFor(target: NSObject, keyPath: String, options: NSKeyVa
// Identifiers can't contain `,`, so the only place where `,` can appear
// is as a delimiter.
// This means there is `W` as element in an array of property attributes.
func isWeakProperty(properyRuntimeInfo: String) -> Bool {
func isWeakProperty(_ properyRuntimeInfo: String) -> Bool {
return properyRuntimeInfo.range(of: ",W,") != nil
}
extension ObservableType where E == AnyObject? {
func finishWithNilWhenDealloc(target: NSObject)
func finishWithNilWhenDealloc(_ target: NSObject)
-> Observable<AnyObject?> {
let deallocating = target.rx_deallocating
@ -87,7 +87,7 @@ extension ObservableType where E == AnyObject? {
}
func observeWeaklyKeyPathFor(
target: NSObject,
_ target: NSObject,
keyPathSections: [String],
options: NSKeyValueObservingOptions
) -> Observable<AnyObject?> {
@ -99,12 +99,12 @@ func observeWeaklyKeyPathFor(
let property = class_getProperty(object_getClass(target), propertyName)
if property == nil {
return Observable.error(RxCocoaError.InvalidPropertyName(object: target, propertyName: propertyName))
return Observable.error(RxCocoaError.invalidPropertyName(object: target, propertyName: propertyName))
}
let propertyAttributes = property_getAttributes(property)
// should dealloc hook be in place if week property, or just create strong reference because it doesn't matter
let isWeak = isWeakProperty(properyRuntimeInfo: String(propertyAttributes) ?? "")
let isWeak = isWeakProperty(String(propertyAttributes) ?? "")
let propertyObservable = KVOObservable(object: target, keyPath: propertyName, options: options.union(.initial), retainTarget: false) as KVOObservable<AnyObject>
// KVO recursion for value changes
@ -118,7 +118,7 @@ func observeWeaklyKeyPathFor(
let strongTarget: AnyObject? = weakTarget
if nextObject == nil {
return Observable.error(RxCocoaError.InvalidObjectOnKeyPath(object: nextTarget!, sourceObject: strongTarget ?? NSNull(), propertyName: propertyName))
return Observable.error(RxCocoaError.invalidObjectOnKeyPath(object: nextTarget!, sourceObject: strongTarget ?? NSNull(), propertyName: propertyName))
}
// if target is alive, then send change
@ -129,11 +129,11 @@ func observeWeaklyKeyPathFor(
let nextElementsObservable = keyPathSections.count == 1
? Observable.just(nextTarget)
: observeWeaklyKeyPathFor(target: nextObject!, keyPathSections: remainingPaths, options: options)
: observeWeaklyKeyPathFor(nextObject!, keyPathSections: remainingPaths, options: options)
if isWeak {
return nextElementsObservable
.finishWithNilWhenDealloc(target: nextObject!)
.finishWithNilWhenDealloc(nextObject!)
}
else {
return nextElementsObservable

View File

@ -18,7 +18,7 @@ import Foundation
, RXMessageSentObserver {
typealias E = ()
private let _subject = ReplaySubject<()>.create(bufferSize: 1)
private let _subject = ReplaySubject<()>.create(1)
@objc var targetImplementation: IMP = RX_default_target_implementation()
@ -29,8 +29,8 @@ import Foundation
init() {
}
@objc func messageSentWithParameters(_ parameters: [AnyObject]) -> Void {
_subject.on(event: .Next())
@objc func messageSent(withParameters parameters: [AnyObject]) -> Void {
_subject.on(.next())
}
func asObservable() -> Observable<()> {
@ -38,7 +38,7 @@ import Foundation
}
deinit {
_subject.on(event: .Completed)
_subject.on(.completed)
}
}
@ -58,8 +58,8 @@ import Foundation
init() {
}
@objc func messageSentWithParameters(_ parameters: [AnyObject]) -> Void {
_subject.on(event: .Next(parameters))
@objc func messageSent(withParameters parameters: [AnyObject]) -> Void {
_subject.on(.next(parameters))
}
func asObservable() -> Observable<[AnyObject]> {
@ -67,7 +67,7 @@ import Foundation
}
deinit {
_subject.on(event: .Completed)
_subject.on(.completed)
}
}

View File

@ -11,7 +11,7 @@ import Foundation
import RxSwift
#endif
extension NSNotificationCenter {
extension NotificationCenter {
/**
Transforms notifications posted to notification center to observable sequence of notifications.
@ -19,11 +19,11 @@ extension NSNotificationCenter {
- parameter object: Optional object used to filter notifications.
- returns: Observable sequence of posted notifications.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func rx_notification(name: String?, object: AnyObject? = nil) -> Observable<NSNotification> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func rx_notification(_ name: Notification.Name, object: AnyObject? = nil) -> Observable<Notification> {
return Observable.create { [weak object] observer in
let nsObserver = self.addObserverForName(name, object: object, queue: nil) { notification in
observer.on(.Next(notification))
let nsObserver = self.addObserver(forName: name, object: object, queue: nil) { notification in
observer.on(.next(notification))
}
return AnonymousDisposable {
@ -31,4 +31,4 @@ extension NSNotificationCenter {
}
}
}
}
}

View File

@ -21,8 +21,8 @@ extension NSObject {
For more information take a look at `rx_observe` method.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func rx_observe<E: KVORepresentable>(type: E.Type, _ keyPath: String, options: NSKeyValueObservingOptions = [.New, .Initial], retainSelf: Bool = true) -> Observable<E?> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func rx_observe<E: KVORepresentable>(_ type: E.Type, _ keyPath: String, options: NSKeyValueObservingOptions = [.new, .initial], retainSelf: Bool = true) -> Observable<E?> {
return rx_observe(E.KVOType.self, keyPath, options: options, retainSelf: retainSelf)
.map(E.init)
}
@ -36,8 +36,8 @@ extension NSObject {
For more information take a look at `rx_observeWeakly` method.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func rx_observeWeakly<E: KVORepresentable>(type: E.Type, _ keyPath: String, options: NSKeyValueObservingOptions = [.New, .Initial]) -> Observable<E?> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func rx_observeWeakly<E: KVORepresentable>(_ type: E.Type, _ keyPath: String, options: NSKeyValueObservingOptions = [.new, .initial]) -> Observable<E?> {
return rx_observeWeakly(E.KVOType.self, keyPath, options: options)
.map(E.init)
}

View File

@ -21,10 +21,10 @@ extension NSObject {
For more information take a look at `rx_observe` method.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func rx_observe<E: RawRepresentable where E.RawValue: KVORepresentable>(type: E.Type, _ keyPath: String, options: NSKeyValueObservingOptions = [.new, .initial], retainSelf: Bool = true) -> Observable<E?> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func rx_observe<E: RawRepresentable where E.RawValue: KVORepresentable>(_ type: E.Type, _ keyPath: String, options: NSKeyValueObservingOptions = [.new, .initial], retainSelf: Bool = true) -> Observable<E?> {
return rx_observe(E.RawValue.KVOType.self, keyPath, options: options, retainSelf: retainSelf)
.map(selector: E.init)
.map(E.init)
}
}
@ -42,10 +42,10 @@ extension NSObject {
For more information take a look at `rx_observeWeakly` method.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func rx_observeWeakly<E: RawRepresentable where E.RawValue: KVORepresentable>(type: E.Type, _ keyPath: String, options: NSKeyValueObservingOptions = [.new, .initial]) -> Observable<E?> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func rx_observeWeakly<E: RawRepresentable where E.RawValue: KVORepresentable>(_ type: E.Type, _ keyPath: String, options: NSKeyValueObservingOptions = [.new, .initial]) -> Observable<E?> {
return rx_observeWeakly(E.RawValue.KVOType.self, keyPath, options: options)
.map(selector: E.init)
.map(E.init)
}
}
#endif

View File

@ -58,7 +58,7 @@ extension NSObject {
- parameter retainSelf: Retains self during observation if set `true`.
- returns: Observable sequence of objects on `keyPath`.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func rx_observe<E>(_ type: E.Type, _ keyPath: String, options: NSKeyValueObservingOptions = [.new, .initial], retainSelf: Bool = true) -> Observable<E?> {
return KVOObservable(object: self, keyPath: keyPath, options: options, retainTarget: retainSelf).asObservable()
}
@ -81,9 +81,9 @@ extension NSObject {
- parameter options: KVO mechanism notification options.
- returns: Observable sequence of objects on `keyPath`.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func rx_observeWeakly<E>(_ type: E.Type, _ keyPath: String, options: NSKeyValueObservingOptions = [.new, .initial]) -> Observable<E?> {
return observeWeaklyKeyPathFor(target: self, keyPath: keyPath, options: options)
return observeWeaklyKeyPathFor(self, keyPath: keyPath, options: options)
.map { n in
return n as? E
}
@ -125,7 +125,7 @@ extension NSObject {
- returns: Observable sequence of object deallocating events.
*/
public func rx_sentMessage(selector: Selector) -> Observable<[AnyObject]> {
public func rx_sentMessage(_ selector: Selector) -> Observable<[AnyObject]> {
return rx_synchronized {
// in case of dealloc selector replay subject behavior needs to be used
if selector == deallocSelector {
@ -197,7 +197,7 @@ extension NSObject {
var error: NSError?
let targetImplementation = RX_ensure_observing(self, deallocSelector, &error)
if targetImplementation == nil {
return Observable.error(error?.rxCocoaErrorForTarget(self) ?? RxCocoaError.Unknown)
return Observable.error(error?.rxCocoaErrorForTarget(self) ?? RxCocoaError.unknown)
}
subject.targetImplementation = targetImplementation!
@ -212,7 +212,7 @@ let rxDeallocatingSelector = RX_selector(deallocSelector)
let rxDeallocatingSelectorReference = RX_reference_from_selector(rxDeallocatingSelector)
extension NSObject {
func rx_synchronized<T>(@noescape action: () -> T) -> T {
func rx_synchronized<T>( _ action: @noescape() -> T) -> T {
objc_sync_enter(self)
let result = action()
objc_sync_exit(self)
@ -225,15 +225,15 @@ extension NSObject {
Helper to make sure that `Observable` returned from `createCachedObservable` is only created once.
This is important because there is only one `target` and `action` properties on `NSControl` or `UIBarButtonItem`.
*/
func rx_lazyInstanceObservable<T: AnyObject>(key: UnsafePointer<Void>, createCachedObservable: () -> T) -> T {
func rx_lazyInstanceObservable<T: AnyObject>(_ key: UnsafePointer<Void>, createCachedObservable: () -> T) -> T {
if let value = objc_getAssociatedObject(self, key) {
return value as! T
}
let observable = createCachedObservable()
objc_setAssociatedObject(self, key, observable, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
objc_setAssociatedObject(self, key, observable, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
return observable
}
}
}

View File

@ -20,19 +20,19 @@ public enum RxCocoaURLError
/**
Unknown error occurred.
*/
case Unknown
case unknown
/**
Response is not NSHTTPURLResponse
*/
case NonHTTPResponse(response: NSURLResponse)
case nonHTTPResponse(response: URLResponse)
/**
Response is not successful. (not in `200 ..< 300` range)
*/
case HTTPRequestFailed(response: NSHTTPURLResponse, data: NSData?)
case httpRequestFailed(response: HTTPURLResponse, data: Data?)
/**
Deserialization error.
*/
case DeserializationError(error: ErrorProtocol)
case deserializationError(error: ErrorProtocol)
}
public extension RxCocoaURLError {
@ -41,28 +41,28 @@ public extension RxCocoaURLError {
*/
public var debugDescription: String {
switch self {
case .Unknown:
case .unknown:
return "Unknown error has occurred."
case let .NonHTTPResponse(response):
case let .nonHTTPResponse(response):
return "Response is not NSHTTPURLResponse `\(response)`."
case let .HTTPRequestFailed(response, _):
case let .httpRequestFailed(response, _):
return "HTTP request failed with `\(response.statusCode)`."
case let .DeserializationError(error):
case let .deserializationError(error):
return "Error during deserialization of the response: \(error)"
}
}
}
func escapeTerminalString(value: String) -> String {
return value.stringByReplacingOccurrencesOfString("\"", withString: "\\\"", options:[], range: nil)
func escapeTerminalString(_ value: String) -> String {
return value.replacingOccurrences(of: "\"", with: "\\\"", options:[], range: nil)
}
func convertURLRequestToCurlCommand(request: NSURLRequest) -> String {
let method = request.HTTPMethod ?? "GET"
func convertURLRequestToCurlCommand(_ request: URLRequest) -> String {
let method = request.httpMethod ?? "GET"
var returnValue = "curl -X \(method) "
if request.HTTPMethod == "POST" && request.HTTPBody != nil {
let maybeBody = NSString(data: request.HTTPBody!, encoding: NSUTF8StringEncoding) as? String
if request.httpMethod == "POST" && request.httpBody != nil {
let maybeBody = NSString(data: request.httpBody!, encoding: String.Encoding.utf8.rawValue) as? String
if let body = maybeBody {
returnValue += "-d \"\(escapeTerminalString(body))\" "
}
@ -74,7 +74,7 @@ func convertURLRequestToCurlCommand(request: NSURLRequest) -> String {
returnValue += "\n -H \"\(escapedKey): \(escapedValue)\" "
}
let URLString = request.URL?.absoluteString ?? "<unknown url>"
let URLString = request.url?.absoluteString ?? "<unknown url>"
returnValue += "\n\"\(escapeTerminalString(URLString))\""
@ -83,10 +83,10 @@ func convertURLRequestToCurlCommand(request: NSURLRequest) -> String {
return returnValue
}
func convertResponseToString(data: NSData!, _ response: NSURLResponse!, _ error: NSError!, _ interval: NSTimeInterval) -> String {
func convertResponseToString(_ data: Data!, _ response: URLResponse!, _ error: NSError!, _ interval: TimeInterval) -> String {
let ms = Int(interval * 1000)
if let response = response as? NSHTTPURLResponse {
if let response = response as? HTTPURLResponse {
if 200 ..< 300 ~= response.statusCode {
return "Success (\(ms)ms): Status \(response.statusCode)"
}
@ -105,7 +105,7 @@ func convertResponseToString(data: NSData!, _ response: NSURLResponse!, _ error:
return "<Unhandled response from server>"
}
extension NSURLSession {
extension URLSession {
/**
Observable sequence of responses for URL request.
@ -118,37 +118,37 @@ extension NSURLSession {
- parameter request: URL request.
- returns: Observable sequence of URL responses.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func rx_response(request: NSURLRequest) -> Observable<(NSData, NSHTTPURLResponse)> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func rx_response(_ request: URLRequest) -> Observable<(Data, HTTPURLResponse)> {
return Observable.create { observer in
// smart compiler should be able to optimize this out
var d: NSDate?
var d: Date?
if Logging.URLRequests(request) {
d = NSDate()
d = Date()
}
let task = self.dataTaskWithRequest(request) { (data, response, error) in
let task = self.dataTask(with: request) { (data, response, error) in
if Logging.URLRequests(request) {
let interval = NSDate().timeIntervalSinceDate(d ?? NSDate())
let interval = Date().timeIntervalSince(d ?? Date())
print(convertURLRequestToCurlCommand(request))
print(convertResponseToString(data, response, error, interval))
}
guard let response = response, data = data else {
observer.on(.Error(error ?? RxCocoaURLError.Unknown))
observer.on(.error(error ?? RxCocoaURLError.unknown))
return
}
guard let httpResponse = response as? NSHTTPURLResponse else {
observer.on(.Error(RxCocoaURLError.NonHTTPResponse(response: response)))
guard let httpResponse = response as? HTTPURLResponse else {
observer.on(.error(RxCocoaURLError.nonHTTPResponse(response: response)))
return
}
observer.on(.Next(data, httpResponse))
observer.on(.Completed)
observer.on(.next(data, httpResponse))
observer.on(.completed)
}
@ -174,14 +174,14 @@ extension NSURLSession {
- parameter request: URL request.
- returns: Observable sequence of response data.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func rx_data(request: NSURLRequest) -> Observable<NSData> {
return rx_response(request).map { (data, response) -> NSData in
@warn_unused_result(message:"http://git.io/rxs.uo")
public func rx_data(_ request: URLRequest) -> Observable<Data> {
return rx_response(request).map { (data, response) -> Data in
if 200 ..< 300 ~= response.statusCode {
return data
}
else {
throw RxCocoaURLError.HTTPRequestFailed(response: response, data: data)
throw RxCocoaURLError.httpRequestFailed(response: response, data: data)
}
}
}
@ -203,13 +203,13 @@ extension NSURLSession {
- parameter request: URL request.
- returns: Observable sequence of response JSON.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func rx_JSON(request: NSURLRequest) -> Observable<AnyObject> {
@warn_unused_result(message:"http://git.io/rxs.uo")
public func rx_JSON(_ request: URLRequest) -> Observable<AnyObject> {
return rx_data(request).map { (data) -> AnyObject in
do {
return try NSJSONSerialization.JSONObjectWithData(data, options: [])
return try JSONSerialization.jsonObject(with: data, options: [])
} catch let error {
throw RxCocoaURLError.DeserializationError(error: error)
throw RxCocoaURLError.deserializationError(error: error)
}
}
}
@ -231,8 +231,8 @@ extension NSURLSession {
- parameter URL: URL of `NSURLRequest` request.
- returns: Observable sequence of response JSON.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
public func rx_JSON(URL: NSURL) -> Observable<AnyObject> {
return rx_JSON(NSURLRequest(URL: URL))
@warn_unused_result(message:"http://git.io/rxs.uo")
public func rx_JSON(_ URL: Foundation.URL) -> Observable<AnyObject> {
return rx_JSON(URLRequest(url: URL))
}
}

View File

@ -15,12 +15,12 @@ class RxCLLocationManagerDelegateProxy : DelegateProxy
, CLLocationManagerDelegate
, DelegateProxyType {
class func currentDelegateFor(object: AnyObject) -> AnyObject? {
class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let locationManager: CLLocationManager = castOrFatalError(object)
return locationManager.delegate
}
class func setCurrentDelegate(delegate: AnyObject?, toObject object: AnyObject) {
class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let locationManager: CLLocationManager = castOrFatalError(object)
locationManager.delegate = castOptionalOrFatalError(delegate)
}

View File

@ -23,31 +23,31 @@ public enum RxCocoaError
/**
Unknown error has occurred.
*/
case Unknown
case unknown
/**
Invalid operation was attempted.
*/
case InvalidOperation(object: AnyObject)
case invalidOperation(object: AnyObject)
/**
Items are not yet bound to user interface but have been requested.
*/
case ItemsNotYetBound(object: AnyObject)
case itemsNotYetBound(object: AnyObject)
/**
Invalid KVO Path.
*/
case InvalidPropertyName(object: AnyObject, propertyName: String)
case invalidPropertyName(object: AnyObject, propertyName: String)
/**
Invalid object on key path.
*/
case InvalidObjectOnKeyPath(object: AnyObject, sourceObject: AnyObject, propertyName: String)
case invalidObjectOnKeyPath(object: AnyObject, sourceObject: AnyObject, propertyName: String)
/**
Error during swizzling.
*/
case ErrorDuringSwizzling
case errorDuringSwizzling
/*
Casting error.
*/
case CastingError(object: AnyObject, targetType: Any.Type)
case castingError(object: AnyObject, targetType: Any.Type)
}
#if !DISABLE_SWIZZLING
@ -58,11 +58,11 @@ public enum RxCocoaInterceptionMechanism {
/**
Unknown message interception mechanism.
*/
case Unknown
case unknown
/**
Key value observing interception mechanism.
*/
case KVO
case kvo
}
/**
@ -74,7 +74,7 @@ public enum RxCocoaObjCRuntimeError
/**
Unknown error has occurred.
*/
case Unknown(target: AnyObject)
case unknown(target: AnyObject)
/**
If the object is reporting a different class then it's real class, that means that there is probably
@ -101,12 +101,12 @@ public enum RxCocoaObjCRuntimeError
it's highly unlikely it would have any benefit in real world use cases, and it's even more
dangerous.
*/
case ObjectMessagesAlreadyBeingIntercepted(target: AnyObject, interceptionMechanism: RxCocoaInterceptionMechanism)
case objectMessagesAlreadyBeingIntercepted(target: AnyObject, interceptionMechanism: RxCocoaInterceptionMechanism)
/**
Trying to observe messages for selector that isn't implemented.
*/
case SelectorNotImplemented(target: AnyObject)
case selectorNotImplemented(target: AnyObject)
/**
Core Foundation classes are usually toll free bridged. Those classes crash the program in case
@ -115,7 +115,7 @@ public enum RxCocoaObjCRuntimeError
There is a possibility to just swizzle methods on original object, but since those won't be usual use
cases for this library, then an error will just be reported for now.
*/
case CantInterceptCoreFoundationTollFreeBridgedObjects(target: AnyObject)
case cantInterceptCoreFoundationTollFreeBridgedObjects(target: AnyObject)
/**
Two libraries have simultaneously tried to modify ObjC runtime and that was detected. This can only
@ -124,17 +124,17 @@ public enum RxCocoaObjCRuntimeError
To synchronize other libraries intercepting messages for an object, use `synchronized` on target object and
it's meta-class.
*/
case ThreadingCollisionWithOtherInterceptionMechanism(target: AnyObject)
case threadingCollisionWithOtherInterceptionMechanism(target: AnyObject)
/**
For some reason saving original method implementation under RX namespace failed.
*/
case SavingOriginalForwardingMethodFailed(target: AnyObject)
case savingOriginalForwardingMethodFailed(target: AnyObject)
/**
Intercepting a sent message by replacing a method implementation with `_objc_msgForward` failed for some reason.
*/
case ReplacingMethodWithForwardingImplementation(target: AnyObject)
case replacingMethodWithForwardingImplementation(target: AnyObject)
/**
Attempt to intercept one of the performance sensitive methods:
@ -143,7 +143,7 @@ public enum RxCocoaObjCRuntimeError
* methodSignatureForSelector:
* forwardingTargetForSelector:
*/
case ObservingPerformanceSensitiveMessages(target: AnyObject)
case observingPerformanceSensitiveMessages(target: AnyObject)
/**
Message implementation has unsupported return type (for example large struct). The reason why this is a error
@ -152,7 +152,7 @@ public enum RxCocoaObjCRuntimeError
The unsupported cases should be fairly uncommon.
*/
case ObservingMessagesWithUnsupportedReturnType(target: AnyObject)
case observingMessagesWithUnsupportedReturnType(target: AnyObject)
}
#endif
@ -165,19 +165,19 @@ public extension RxCocoaError {
*/
public var debugDescription: String {
switch self {
case .Unknown:
case .unknown:
return "Unknown error occurred."
case let .InvalidOperation(object):
case let .invalidOperation(object):
return "Invalid operation was attempted on `\(object)`."
case let .ItemsNotYetBound(object):
case let .itemsNotYetBound(object):
return "Data source is set, but items are not yet bound to user interface for `\(object)`."
case let .InvalidPropertyName(object, propertyName):
case let .invalidPropertyName(object, propertyName):
return "Object `\(object)` dosn't have a property named `\(propertyName)`."
case let .InvalidObjectOnKeyPath(object, sourceObject, propertyName):
case let .invalidObjectOnKeyPath(object, sourceObject, propertyName):
return "Unobservable object `\(object)` was observed as `\(propertyName)` of `\(sourceObject)`."
case .ErrorDuringSwizzling:
case .errorDuringSwizzling:
return "Error during swizzling."
case .CastingError(let object, let targetType):
case .castingError(let object, let targetType):
return "Error casting `\(object)` to `\(targetType)`"
}
}
@ -191,25 +191,25 @@ public extension RxCocoaObjCRuntimeError {
*/
public var debugDescription: String {
switch self {
case let .Unknown(target):
case let .unknown(target):
return "Unknown error occurred.\nTarget: `\(target)`"
case let ObjectMessagesAlreadyBeingIntercepted(target, interceptionMechanism):
let interceptionMechanismDescription = interceptionMechanism == .KVO ? "KVO" : "other interception mechanism"
case let objectMessagesAlreadyBeingIntercepted(target, interceptionMechanism):
let interceptionMechanismDescription = interceptionMechanism == .kvo ? "KVO" : "other interception mechanism"
return "Collision between RxCocoa interception mechanism and \(interceptionMechanismDescription)."
+ " To resolve this conflict please use this interception mechanism first.\nTarget: \(target)"
case let SelectorNotImplemented(target):
case let selectorNotImplemented(target):
return "Trying to observe messages for selector that isn't implemented.\nTarget: \(target)"
case let CantInterceptCoreFoundationTollFreeBridgedObjects(target):
case let cantInterceptCoreFoundationTollFreeBridgedObjects(target):
return "Interception of messages sent to Core Foundation isn't supported.\nTarget: \(target)"
case let ThreadingCollisionWithOtherInterceptionMechanism(target):
case let threadingCollisionWithOtherInterceptionMechanism(target):
return "Detected a conflict while modifying ObjC runtime.\nTarget: \(target)"
case let SavingOriginalForwardingMethodFailed(target):
case let savingOriginalForwardingMethodFailed(target):
return "Saving original method implementation failed.\nTarget: \(target)"
case let ReplacingMethodWithForwardingImplementation(target):
case let replacingMethodWithForwardingImplementation(target):
return "Intercepting a sent message by replacing a method implementation with `_objc_msgForward` failed for some reason.\nTarget: \(target)"
case let ObservingPerformanceSensitiveMessages(target):
case let observingPerformanceSensitiveMessages(target):
return "Attempt to intercept one of the performance sensitive methods. \nTarget: \(target)"
case let ObservingMessagesWithUnsupportedReturnType(target):
case let observingMessagesWithUnsupportedReturnType(target):
return "Attempt to intercept a method with unsupported return type. \nTarget: \(target)"
}
}
@ -251,7 +251,7 @@ func castOptionalOrFatalError<T>(_ value: AnyObject?) -> T? {
func castOrThrow<T>(_ resultType: T.Type, _ object: AnyObject) throws -> T {
guard let returnValue = object as? T else {
throw RxCocoaError.CastingError(object: object, targetType: resultType)
throw RxCocoaError.castingError(object: object, targetType: resultType)
}
return returnValue
@ -263,7 +263,7 @@ func castOptionalOrThrow<T>(_ resultType: T.Type, _ object: AnyObject) throws ->
}
guard let returnValue = object as? T else {
throw RxCocoaError.CastingError(object: object, targetType: resultType)
throw RxCocoaError.castingError(object: object, targetType: resultType)
}
return returnValue
@ -303,28 +303,28 @@ extension NSError {
switch errorCode {
case .unknown:
return .Unknown(target: target)
return .unknown(target: target)
case .objectMessagesAlreadyBeingIntercepted:
let isKVO = (self.userInfo[RXObjCRuntimeErrorIsKVOKey] as? NSNumber)?.boolValue ?? false
return .ObjectMessagesAlreadyBeingIntercepted(target: target, interceptionMechanism: isKVO ? .KVO : .Unknown)
return .objectMessagesAlreadyBeingIntercepted(target: target, interceptionMechanism: isKVO ? .kvo : .unknown)
case .selectorNotImplemented:
return .SelectorNotImplemented(target: target)
return .selectorNotImplemented(target: target)
case .cantInterceptCoreFoundationTollFreeBridgedObjects:
return .CantInterceptCoreFoundationTollFreeBridgedObjects(target: target)
return .cantInterceptCoreFoundationTollFreeBridgedObjects(target: target)
case .threadingCollisionWithOtherInterceptionMechanism:
return .ThreadingCollisionWithOtherInterceptionMechanism(target: target)
return .threadingCollisionWithOtherInterceptionMechanism(target: target)
case .savingOriginalForwardingMethodFailed:
return .SavingOriginalForwardingMethodFailed(target: target)
return .savingOriginalForwardingMethodFailed(target: target)
case .replacingMethodWithForwardingImplementation:
return .ReplacingMethodWithForwardingImplementation(target: target)
return .replacingMethodWithForwardingImplementation(target: target)
case .observingPerformanceSensitiveMessages:
return .ObservingPerformanceSensitiveMessages(target: target)
return .observingPerformanceSensitiveMessages(target: target)
case .observingMessagesWithUnsupportedReturnType:
return .ObservingMessagesWithUnsupportedReturnType(target: target)
return .observingMessagesWithUnsupportedReturnType(target: target)
}
}
return RxCocoaObjCRuntimeError.Unknown(target: target)
return RxCocoaObjCRuntimeError.unknown(target: target)
}
}

View File

@ -20,5 +20,5 @@ public protocol SectionedViewDataSourceType {
- parameter indexPath: Model index path
- returns: Model at index path.
*/
func modelAtIndexPath(indexPath: NSIndexPath) throws -> Any
}
func modelAtIndexPath(_ indexPath: IndexPath) throws -> Any
}

View File

@ -19,6 +19,7 @@ class _RxCollectionViewReactiveArrayDataSource
: NSObject
, UICollectionViewDataSource {
@objc(numberOfSectionsInCollectionView:)
func numberOfSections(in: UICollectionView) -> Int {
return 1
}
@ -31,11 +32,11 @@ class _RxCollectionViewReactiveArrayDataSource
return _collectionView(collectionView, numberOfItemsInSection: section)
}
func _collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: NSIndexPath) -> UICollectionViewCell {
private func _collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
rxAbstractMethod()
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: NSIndexPath) -> UICollectionViewCell {
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
return _collectionView(collectionView, cellForItemAt: indexPath)
}
}
@ -53,7 +54,7 @@ class RxCollectionViewReactiveArrayDataSourceSequenceWrapper<S: Sequence>
UIBindingObserver(UIElement: self) { collectionViewDataSource, sectionModels in
let sections = Array(sectionModels)
collectionViewDataSource.collectionView(collectionView, observedElements: sections)
}.on(event: observedEvent)
}.on(observedEvent)
}
}
@ -67,14 +68,14 @@ class RxCollectionViewReactiveArrayDataSource<Element>
var itemModels: [Element]? = nil
func modelAtIndex(index: Int) -> Element? {
func modelAtIndex(_ index: Int) -> Element? {
return itemModels?[index]
}
func modelAtIndexPath(indexPath: NSIndexPath) throws -> Any {
precondition(indexPath.section == 0)
guard let item = itemModels?[indexPath.item] else {
throw RxCocoaError.ItemsNotYetBound(object: self)
func modelAtIndexPath(_ indexPath: IndexPath) throws -> Any {
precondition((indexPath as NSIndexPath).section == 0)
guard let item = itemModels?[(indexPath as NSIndexPath).item] else {
throw RxCocoaError.itemsNotYetBound(object: self)
}
return item
}
@ -91,8 +92,8 @@ class RxCollectionViewReactiveArrayDataSource<Element>
return itemModels?.count ?? 0
}
override func _collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: NSIndexPath) -> UICollectionViewCell {
return cellFactory(collectionView, indexPath.item, itemModels![indexPath.item])
override func _collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
return cellFactory(collectionView, (indexPath as NSIndexPath).item, itemModels![(indexPath as NSIndexPath).item])
}
// reactive

View File

@ -19,7 +19,7 @@ class _RxTableViewReactiveArrayDataSource
: NSObject
, UITableViewDataSource {
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
@ -31,12 +31,12 @@ class _RxTableViewReactiveArrayDataSource
return _tableView(tableView, numberOfRowsInSection: section)
}
func _tableView(tableView: UITableView, cellForRowAt indexPath: NSIndexPath) -> UITableViewCell {
private func _tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
rxAbstractMethod()
}
func tableView(tableView: UITableView, cellForRowAt indexPath: NSIndexPath) -> UITableViewCell {
return _tableView(tableView: tableView, cellForRowAt: indexPath)
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return _tableView(tableView, cellForRowAt: indexPath)
}
}
@ -54,7 +54,7 @@ class RxTableViewReactiveArrayDataSourceSequenceWrapper<S: Sequence>
UIBindingObserver(UIElement: self) { tableViewDataSource, sectionModels in
let sections = Array(sectionModels)
tableViewDataSource.tableView(tableView, observedElements: sections)
}.on(event: observedEvent)
}.on(observedEvent)
}
}
@ -66,14 +66,14 @@ class RxTableViewReactiveArrayDataSource<Element>
var itemModels: [Element]? = nil
func modelAtIndex(index: Int) -> Element? {
func modelAtIndex(_ index: Int) -> Element? {
return itemModels?[index]
}
func modelAtIndexPath(indexPath: NSIndexPath) throws -> Any {
precondition(indexPath.section == 0)
guard let item = itemModels?[indexPath.item] else {
throw RxCocoaError.ItemsNotYetBound(object: self)
func modelAtIndexPath(_ indexPath: IndexPath) throws -> Any {
precondition((indexPath as NSIndexPath).section == 0)
guard let item = itemModels?[(indexPath as NSIndexPath).item] else {
throw RxCocoaError.itemsNotYetBound(object: self)
}
return item
}
@ -88,8 +88,8 @@ class RxTableViewReactiveArrayDataSource<Element>
return itemModels?.count ?? 0
}
override func _tableView(_ tableView: UITableView, cellForRowAt indexPath: NSIndexPath) -> UITableViewCell {
return cellFactory(tableView, indexPath.item, itemModels![indexPath.row])
override func _tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return cellFactory(tableView, (indexPath as NSIndexPath).item, itemModels![(indexPath as NSIndexPath).row])
}
// reactive

View File

@ -10,7 +10,7 @@ import Foundation
import UIKit
#if os(iOS) || os(tvOS)
public typealias ItemMovedEvent = (sourceIndex: NSIndexPath, destinationIndex: NSIndexPath)
public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath)
public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: NSIndexPath)
#endif
public typealias ItemMovedEvent = (sourceIndex: IndexPath, destinationIndex: IndexPath)
public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: IndexPath)
public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: IndexPath)
#endif

View File

@ -30,7 +30,7 @@ extension NSTextStorage {
*/
public var rx_didProcessEditingRangeChangeInLength: Observable<(editedMask:NSTextStorageEditActions, editedRange:NSRange, delta:Int)> {
return rx_delegate
.observe(selector: #selector(NSTextStorageDelegate.textStorage(_:didProcessEditing:range:changeInLength:)))
.observe(#selector(NSTextStorageDelegate.textStorage(_:didProcessEditing:range:changeInLength:)))
.map { a in
let editedMask = NSTextStorageEditActions(rawValue: try castOrThrow(UInt.self, a[1]) )
let editedRange = try castOrThrow(NSValue.self, a[2]).rangeValue

View File

@ -24,7 +24,7 @@ class CollectionViewDataSourceNotSet
}
// The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: NSIndexPath) -> UICollectionViewCell {
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
rxAbstractMethodWithMessage(dataSourceNotSet)
}
@ -67,7 +67,7 @@ public class RxCollectionViewDataSourceProxy
/**
Required delegate method implementation.
*/
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: NSIndexPath) -> UICollectionViewCell {
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
return (_requiredMethodsDataSource ?? collectionViewDataSourceNotSet).collectionView(collectionView, cellForItemAt: indexPath)
}
@ -76,7 +76,7 @@ public class RxCollectionViewDataSourceProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override class func createProxyForObject(object: AnyObject) -> AnyObject {
public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
let collectionView = (object as! UICollectionView)
return castOrFatalError(collectionView.rx_createDataSourceProxy())
@ -86,13 +86,13 @@ public class RxCollectionViewDataSourceProxy
For more information take a look at `DelegateProxyType`.
*/
public override class func delegateAssociatedObjectTag() -> UnsafePointer<Void> {
return _pointer(p: &dataSourceAssociatedTag)
return _pointer(&dataSourceAssociatedTag)
}
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(delegate: AnyObject?, toObject object: AnyObject) {
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let collectionView: UICollectionView = castOrFatalError(object)
collectionView.dataSource = castOptionalOrFatalError(delegate)
}
@ -100,7 +100,7 @@ public class RxCollectionViewDataSourceProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(object: AnyObject) -> AnyObject? {
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let collectionView: UICollectionView = castOrFatalError(object)
return collectionView.dataSource
}
@ -108,10 +108,10 @@ public class RxCollectionViewDataSourceProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override func setForwardToDelegate(forwardToDelegate: AnyObject?, retainDelegate: Bool) {
public override func setForwardToDelegate(_ forwardToDelegate: AnyObject?, retainDelegate: Bool) {
let requiredMethodsDataSource: UICollectionViewDataSource? = castOptionalOrFatalError(forwardToDelegate)
_requiredMethodsDataSource = requiredMethodsDataSource ?? collectionViewDataSourceNotSet
super.setForwardToDelegate(forwardToDelegate: forwardToDelegate, retainDelegate: retainDelegate)
super.setForwardToDelegate(forwardToDelegate, retainDelegate: retainDelegate)
}
}

View File

@ -23,7 +23,7 @@ public class RxImagePickerDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(delegate: AnyObject?, toObject object: AnyObject) {
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let imagePickerController: UIImagePickerController = castOrFatalError(object)
imagePickerController.delegate = castOptionalOrFatalError(delegate)
}
@ -31,7 +31,7 @@ public class RxImagePickerDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(object: AnyObject) -> AnyObject? {
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let imagePickerController: UIImagePickerController = castOrFatalError(object)
return imagePickerController.delegate
}

View File

@ -22,7 +22,7 @@ public class RxPickerViewDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(delegate: AnyObject?, toObject object: AnyObject) {
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let pickerView: UIPickerView = castOrFatalError(object)
pickerView.delegate = castOptionalOrFatalError(delegate)
}
@ -30,7 +30,7 @@ public class RxPickerViewDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(object: AnyObject) -> AnyObject? {
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let pickerView: UIPickerView = castOrFatalError(object)
return pickerView.delegate
}

View File

@ -34,9 +34,9 @@ public class RxScrollViewDelegateProxy
*/
internal var contentOffsetSubject: Observable<CGPoint> {
if _contentOffsetSubject == nil {
let replaySubject = ReplaySubject<CGPoint>.create(bufferSize: 1)
let replaySubject = ReplaySubject<CGPoint>.create(1)
_contentOffsetSubject = replaySubject
replaySubject.on(event: .Next(self.scrollView?.contentOffset ?? CGPoint.zero))
replaySubject.on(.next(self.scrollView?.contentOffset ?? CGPoint.zero))
}
return _contentOffsetSubject!
@ -57,9 +57,9 @@ public class RxScrollViewDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public func scrollViewDidScroll(scrollView: UIScrollView) {
public func scrollViewDidScroll(_ scrollView: UIScrollView) {
if let contentOffset = _contentOffsetSubject {
contentOffset.on(event: .Next(scrollView.contentOffset))
contentOffset.on(.next(scrollView.contentOffset))
}
self._forwardToDelegate?.scrollViewDidScroll?(scrollView)
}
@ -69,7 +69,7 @@ public class RxScrollViewDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override class func createProxyForObject(object: AnyObject) -> AnyObject {
public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
let scrollView = (object as! UIScrollView)
return castOrFatalError(scrollView.rx_createDelegateProxy())
@ -78,7 +78,7 @@ public class RxScrollViewDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(delegate: AnyObject?, toObject object: AnyObject) {
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let scrollView: UIScrollView = castOrFatalError(object)
scrollView.delegate = castOptionalOrFatalError(delegate)
}
@ -86,14 +86,14 @@ public class RxScrollViewDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(object: AnyObject) -> AnyObject? {
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let scrollView: UIScrollView = castOrFatalError(object)
return scrollView.delegate
}
deinit {
if let contentOffset = _contentOffsetSubject {
contentOffset.on(event: .Completed)
contentOffset.on(.completed)
}
}
}

View File

@ -25,7 +25,7 @@ public class RxSearchBarDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(object: AnyObject) -> AnyObject? {
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let searchBar: UISearchBar = castOrFatalError(object)
return searchBar.delegate
}
@ -33,7 +33,7 @@ public class RxSearchBarDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(delegate: AnyObject?, toObject object: AnyObject) {
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let searchBar: UISearchBar = castOrFatalError(object)
searchBar.delegate = castOptionalOrFatalError(delegate)
}
@ -44,7 +44,7 @@ public class RxSearchBarDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override class func createProxyForObject(object: AnyObject) -> AnyObject {
public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
let searchBar = (object as! UISearchBar)
return castOrFatalError(searchBar.rx_createDelegateProxy())

View File

@ -26,7 +26,7 @@ public class RxSearchControllerDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(delegate: AnyObject?, toObject object: AnyObject) {
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let searchController: UISearchController = castOrFatalError(object)
searchController.delegate = castOptionalOrFatalError(delegate)
}
@ -34,7 +34,7 @@ public class RxSearchControllerDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(object: AnyObject) -> AnyObject? {
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let searchController: UISearchController = castOrFatalError(object)
return searchController.delegate
}

View File

@ -19,15 +19,15 @@ let tableViewDataSourceNotSet = TableViewDataSourceNotSet()
class TableViewDataSourceNotSet
: NSObject
, UITableViewDataSource {
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
func numberOfSections(in tableView: UITableView) -> Int {
rxAbstractMethodWithMessage(dataSourceNotSet)
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
rxAbstractMethodWithMessage(dataSourceNotSet)
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
rxAbstractMethodWithMessage(dataSourceNotSet)
}
}
@ -62,21 +62,21 @@ public class RxTableViewDataSourceProxy
/**
Required delegate method implementation.
*/
public func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return (_requiredMethodsDataSource ?? tableViewDataSourceNotSet).numberOfSectionsInTableView?(tableView) ?? 1
public func numberOfSections(in tableView: UITableView) -> Int {
return (_requiredMethodsDataSource ?? tableViewDataSourceNotSet).numberOfSections?(in: tableView) ?? 1
}
/**
Required delegate method implementation.
*/
public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return (_requiredMethodsDataSource ?? tableViewDataSourceNotSet).tableView(tableView, numberOfRowsInSection: section)
}
/**
Required delegate method implementation.
*/
public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return (_requiredMethodsDataSource ?? tableViewDataSourceNotSet).tableView(tableView, cellForRowAt: indexPath)
}
@ -85,7 +85,7 @@ public class RxTableViewDataSourceProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override class func createProxyForObject(object: AnyObject) -> AnyObject {
public override class func createProxyForObject(_ object: AnyObject) -> AnyObject {
let tableView = (object as! UITableView)
return castOrFatalError(tableView.rx_createDataSourceProxy())
@ -95,13 +95,13 @@ public class RxTableViewDataSourceProxy
For more information take a look at `DelegateProxyType`.
*/
public override class func delegateAssociatedObjectTag() -> UnsafePointer<Void> {
return _pointer(p: &dataSourceAssociatedTag)
return _pointer(&dataSourceAssociatedTag)
}
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(delegate: AnyObject?, toObject object: AnyObject) {
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let tableView: UITableView = castOrFatalError(object)
tableView.dataSource = castOptionalOrFatalError(delegate)
}
@ -109,7 +109,7 @@ public class RxTableViewDataSourceProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(object: AnyObject) -> AnyObject? {
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let tableView: UITableView = castOrFatalError(object)
return tableView.dataSource
}
@ -117,10 +117,10 @@ public class RxTableViewDataSourceProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public override func setForwardToDelegate(forwardToDelegate: AnyObject?, retainDelegate: Bool) {
public override func setForwardToDelegate(_ forwardToDelegate: AnyObject?, retainDelegate: Bool) {
let requiredMethodsDataSource: UITableViewDataSource? = castOptionalOrFatalError(forwardToDelegate)
_requiredMethodsDataSource = requiredMethodsDataSource ?? tableViewDataSourceNotSet
super.setForwardToDelegate(forwardToDelegate: forwardToDelegate, retainDelegate: retainDelegate)
super.setForwardToDelegate(forwardToDelegate, retainDelegate: retainDelegate)
}
}

View File

@ -23,7 +23,7 @@ public class RxTextStorageDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func setCurrentDelegate(delegate: AnyObject?, toObject object: AnyObject) {
public class func setCurrentDelegate(_ delegate: AnyObject?, toObject object: AnyObject) {
let textStorage: NSTextStorage = castOrFatalError(object)
textStorage.delegate = castOptionalOrFatalError(delegate)
}
@ -31,7 +31,7 @@ public class RxTextStorageDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
public class func currentDelegateFor(object: AnyObject) -> AnyObject? {
public class func currentDelegateFor(_ object: AnyObject) -> AnyObject? {
let textStorage: NSTextStorage = castOrFatalError(object)
return textStorage.delegate
}

View File

@ -41,14 +41,14 @@ public class RxTextViewDelegateProxy
/**
For more information take a look at `DelegateProxyType`.
*/
@objc public func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
@objc public func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
/**
We've had some issues with observing text changes. This is here just in case we need the same hack in future and that
we wouldn't need to change the public interface.
*/
let forwardToDelegate = self.forwardToDelegate() as? UITextViewDelegate
return forwardToDelegate?.textView?(textView,
shouldChangeTextInRange: range,
shouldChangeTextIn: range,
replacementText: text) ?? true
}
}

View File

@ -24,7 +24,7 @@ extension UIAlertAction {
*/
public var rx_enabled: AnyObserver<Bool> {
return UIBindingObserver(UIElement: self) { alertAction, value in
alertAction.enabled = value
alertAction.isEnabled = value
}.asObserver()
}

View File

@ -22,7 +22,7 @@ import Foundation
*/
public var rx_networkActivityIndicatorVisible: AnyObserver<Bool> {
return UIBindingObserver(UIElement: self) { application, active in
application.networkActivityIndicatorVisible = active
application.isNetworkActivityIndicatorVisible = active
}.asObserver()
}
}

View File

@ -22,7 +22,7 @@ extension UIBarButtonItem {
*/
public var rx_enabled: AnyObserver<Bool> {
return UIBindingObserver(UIElement: self) { UIElement, value in
UIElement.enabled = value
UIElement.isEnabled = value
}.asObserver()
}
@ -30,18 +30,18 @@ extension UIBarButtonItem {
Reactive wrapper for target action pattern on `self`.
*/
public var rx_tap: ControlEvent<Void> {
let source = rx_lazyInstanceObservable(key: &rx_tap_key) { () -> Observable<Void> in
let source = rx_lazyInstanceObservable(&rx_tap_key) { () -> Observable<Void> in
Observable.create { [weak self] observer in
guard let control = self else {
observer.on(event: .Completed)
observer.on(.completed)
return NopDisposable.instance
}
let target = BarButtonItemTarget(barButtonItem: control) {
observer.on(event: .Next())
observer.on(.next())
}
return target
}
.takeUntil(other: self.rx_deallocated)
.takeUntil(self.rx_deallocated)
.share()
}

View File

@ -20,7 +20,7 @@ extension UIButton {
Reactive wrapper for `TouchUpInside` control event.
*/
public var rx_tap: ControlEvent<Void> {
return rx_controlEvent(controlEvents: .touchUpInside)
return rx_controlEvent(.touchUpInside)
}
}
@ -41,7 +41,7 @@ extension UIButton {
Reactive wrapper for `PrimaryActionTriggered` control event.
*/
public var rx_primaryAction: ControlEvent<Void> {
return rx_controlEvent(.PrimaryActionTriggered)
return rx_controlEvent(.primaryActionTriggered)
}
}

View File

@ -25,9 +25,9 @@ extension UICollectionView {
- parameter cellFactory: Transform between sequence elements and view cells.
- returns: Disposable object that can be used to unbind.
*/
public func rx_itemsWithCellFactory<S: SequenceType, O: ObservableType where O.E == S>
(source: O)
-> (cellFactory: (UICollectionView, Int, S.Generator.Element) -> UICollectionViewCell)
public func rx_itemsWithCellFactory<S: Sequence, O: ObservableType where O.E == S>
(_ source: O)
-> (cellFactory: (UICollectionView, Int, S.Iterator.Element) -> UICollectionViewCell)
-> Disposable {
return { cellFactory in
let dataSource = RxCollectionViewReactiveArrayDataSourceSequenceWrapper<S>(cellFactory: cellFactory)
@ -45,16 +45,16 @@ extension UICollectionView {
- parameter cellType: Type of table view cell.
- returns: Disposable object that can be used to unbind.
*/
public func rx_itemsWithCellIdentifier<S: SequenceType, Cell: UICollectionViewCell, O : ObservableType where O.E == S>
(cellIdentifier: String, cellType: Cell.Type = Cell.self)
public func rx_itemsWithCellIdentifier<S: Sequence, Cell: UICollectionViewCell, O : ObservableType where O.E == S>
(_ cellIdentifier: String, cellType: Cell.Type = Cell.self)
-> (source: O)
-> (configureCell: (Int, S.Generator.Element, Cell) -> Void)
-> (configureCell: (Int, S.Iterator.Element, Cell) -> Void)
-> Disposable {
return { source in
return { configureCell in
let dataSource = RxCollectionViewReactiveArrayDataSourceSequenceWrapper<S> { (cv, i, item) in
let indexPath = NSIndexPath(forItem: i, inSection: 0)
let cell = cv.dequeueReusableCellWithReuseIdentifier(cellIdentifier, forIndexPath: indexPath) as! Cell
let indexPath = IndexPath(item: i, section: 0)
let cell = cv.dequeueReusableCell(withReuseIdentifier: cellIdentifier, for: indexPath) as! Cell
configureCell(i, item, cell)
return cell
}
@ -75,7 +75,7 @@ extension UICollectionView {
DataSource: protocol<RxCollectionViewDataSourceType, UICollectionViewDataSource>,
O: ObservableType where DataSource.Element == O.E
>
(dataSource: DataSource)
(_ dataSource: DataSource)
-> (source: O)
-> Disposable {
return { source in
@ -126,7 +126,7 @@ extension UICollectionView {
- parameter dataSource: Data source object.
- returns: Disposable object that can be used to unbind the data source.
*/
public func rx_setDataSource(dataSource: UICollectionViewDataSource)
public func rx_setDataSource(_ dataSource: UICollectionViewDataSource)
-> Disposable {
return RxCollectionViewDataSourceProxy.installForwardDelegate(dataSource, retainDelegate: false, onProxyForObject: self)
}
@ -134,10 +134,10 @@ extension UICollectionView {
/**
Reactive wrapper for `delegate` message `collectionView:didSelectItemAtIndexPath:`.
*/
public var rx_itemSelected: ControlEvent<NSIndexPath> {
let source = rx_delegate.observe(#selector(UICollectionViewDelegate.collectionView(_:didSelectItemAtIndexPath:)))
public var rx_itemSelected: ControlEvent<IndexPath> {
let source = rx_delegate.observe(#selector(UICollectionViewDelegate.collectionView(_:didSelectItemAt:)))
.map { a in
return a[1] as! NSIndexPath
return a[1] as! IndexPath
}
return ControlEvent(events: source)
@ -146,10 +146,10 @@ extension UICollectionView {
/**
Reactive wrapper for `delegate` message `collectionView:didSelectItemAtIndexPath:`.
*/
public var rx_itemDeselected: ControlEvent<NSIndexPath> {
let source = rx_delegate.observe(#selector(UICollectionViewDelegate.collectionView(_:didDeselectItemAtIndexPath:)))
public var rx_itemDeselected: ControlEvent<IndexPath> {
let source = rx_delegate.observe(#selector(UICollectionViewDelegate.collectionView(_:didDeselectItemAt:)))
.map { a in
return a[1] as! NSIndexPath
return a[1] as! IndexPath
}
return ControlEvent(events: source)
@ -166,7 +166,7 @@ extension UICollectionView {
.map { ...
```
*/
public func rx_modelSelected<T>(modelType: T.Type) -> ControlEvent<T> {
public func rx_modelSelected<T>(_ modelType: T.Type) -> ControlEvent<T> {
let source: Observable<T> = rx_itemSelected.flatMap { [weak self] indexPath -> Observable<T> in
guard let view = self else {
return Observable.empty()
@ -189,7 +189,7 @@ extension UICollectionView {
.map { ...
```
*/
public func rx_modelDeselected<T>(modelType: T.Type) -> ControlEvent<T> {
public func rx_modelDeselected<T>(_ modelType: T.Type) -> ControlEvent<T> {
let source: Observable<T> = rx_itemDeselected.flatMap { [weak self] indexPath -> Observable<T> in
guard let view = self else {
return Observable.empty()
@ -204,7 +204,7 @@ extension UICollectionView {
/**
Syncronous helper method for retrieving a model at indexPath through a reactive data source
*/
public func rx_modelAtIndexPath<T>(indexPath: NSIndexPath) throws -> T {
public func rx_modelAtIndexPath<T>(_ indexPath: IndexPath) throws -> T {
let dataSource: SectionedViewDataSourceType = castOrFatalError(self.rx_dataSource.forwardToDelegate(), message: "This method only works in case one of the `rx_itemsWith*` methods was used.")
let element = try dataSource.modelAtIndexPath(indexPath)

View File

@ -21,7 +21,7 @@ extension UIControl {
*/
public var rx_enabled: AnyObserver<Bool> {
return UIBindingObserver(UIElement: self) { control, value in
control.enabled = value
control.isEnabled = value
}.asObserver()
}
@ -30,7 +30,7 @@ extension UIControl {
*/
public var rx_selected: AnyObserver<Bool> {
return UIBindingObserver(UIElement: self) { control, selected in
control.selected = selected
control.isSelected = selected
}.asObserver()
}
@ -39,18 +39,18 @@ extension UIControl {
- parameter controlEvents: Filter for observed event types.
*/
public func rx_controlEvent(controlEvents: UIControlEvents) -> ControlEvent<Void> {
public func rx_controlEvent(_ controlEvents: UIControlEvents) -> ControlEvent<Void> {
let source: Observable<Void> = Observable.create { [weak self] observer in
MainScheduler.ensureExecutingOnScheduler()
guard let control = self else {
observer.on(.Completed)
observer.on(.completed)
return NopDisposable.instance
}
let controlTarget = ControlTarget(control: control, controlEvents: controlEvents) {
control in
observer.on(.Next())
observer.on(.next())
}
return AnonymousDisposable(controlTarget.dispose)
@ -63,18 +63,18 @@ extension UIControl {
You might be wondering why the ugly `as!` casts etc, well, for some reason if
Swift compiler knows C is UIControl type and optimizations are turned on, it will crash.
*/
static func rx_value<C: AnyObject, T: Equatable>(control: C, getter: (C) -> T, setter: (C, T) -> Void) -> ControlProperty<T> {
static func rx_value<C: AnyObject, T: Equatable>(_ control: C, getter: (C) -> T, setter: (C, T) -> Void) -> ControlProperty<T> {
let source: Observable<T> = Observable.create { [weak weakControl = control] observer in
guard let control = weakControl else {
observer.on(.Completed)
observer.on(.completed)
return NopDisposable.instance
}
observer.on(.Next(getter(control)))
observer.on(.next(getter(control)))
let controlTarget = ControlTarget(control: control as! UIControl, controlEvents: [.AllEditingEvents, .ValueChanged]) { _ in
let controlTarget = ControlTarget(control: control as! UIControl, controlEvents: [.allEditingEvents, .valueChanged]) { _ in
if let control = weakControl {
observer.on(.Next(getter(control)))
observer.on(.next(getter(control)))
}
}

View File

@ -19,9 +19,9 @@ extension UIDatePicker {
/**
Reactive wrapper for `date` property.
*/
public var rx_date: ControlProperty<NSDate> {
public var rx_date: ControlProperty<Date> {
return UIControl.rx_value(
control: self,
self,
getter: { datePicker in
datePicker.date
}, setter: { datePicker, value in

View File

@ -31,7 +31,7 @@ class GestureTarget<Recognizer: UIGestureRecognizer>: RxTarget {
gestureRecognizer.addTarget(self, action: selector)
let method = self.methodForSelector(selector)
let method = self.method(for: selector)
if method == nil {
fatalError("Can't find method")
}
@ -63,17 +63,17 @@ extension Reactive where Self: UIGestureRecognizer {
MainScheduler.ensureExecutingOnScheduler()
guard let control = self else {
observer.on(event: .Completed)
observer.on(.completed)
return NopDisposable.instance
}
let observer = GestureTarget(control) {
control in
observer.on(event: .Next(control))
observer.on(.next(control))
}
return observer
}.takeUntil(other: rx_deallocated)
}.takeUntil(rx_deallocated)
return ControlEvent(events: source)
}

View File

@ -20,7 +20,7 @@ extension UIImageView {
Bindable sink for `image` property.
*/
public var rx_image: AnyObserver<UIImage?> {
return self.rx_imageAnimated(transitionType: nil)
return self.rx_imageAnimated(nil)
}
/**
@ -28,7 +28,7 @@ extension UIImageView {
- parameter transitionType: Optional transition type while setting the image (kCATransitionFade, kCATransitionMoveIn, ...)
*/
public func rx_imageAnimated(transitionType: String?) -> AnyObserver<UIImage?> {
public func rx_imageAnimated(_ transitionType: String?) -> AnyObserver<UIImage?> {
return UIBindingObserver(UIElement: self) { imageView, image in
if let transitionType = transitionType {
if image != nil {

View File

@ -28,7 +28,7 @@ extension UILabel {
/**
Bindable sink for `attributedText` property.
*/
public var rx_attributedText: AnyObserver<NSAttributedString?> {
public var rx_attributedText: AnyObserver<AttributedString?> {
return UIBindingObserver(UIElement: self) { label, text in
label.attributedText = text
}.asObserver()

View File

@ -23,7 +23,7 @@ extension UIPickerView {
return RxPickerViewDelegateProxy.proxyForObject(self)
}
public var rx_itemSelected: ControlEvent<(row: Int, component: Int)> {
public var rx_itemSelected: ControlEvent<(Int, Int)> {
let source = rx_delegate
.observe(#selector(UIPickerViewDelegate.pickerView(_:didSelectRow:inComponent:)))
.map {

View File

@ -55,7 +55,7 @@ extension UIScrollView {
- parameter delegate: Delegate object.
- returns: Disposable object that can be used to unbind the delegate.
*/
public func rx_setDelegate(delegate: UIScrollViewDelegate)
public func rx_setDelegate(_ delegate: UIScrollViewDelegate)
-> Disposable {
return RxScrollViewDelegateProxy.installForwardDelegate(delegate, retainDelegate: false, onProxyForObject: self)
}

View File

@ -49,7 +49,7 @@ extension UISearchBar {
.map { a in
return a[1] as? String ?? ""
}
.startWith(text)
.startWith(elements: text)
}
let bindingObserver = UIBindingObserver(UIElement: self) { (searchBar, text: String) in
@ -70,7 +70,7 @@ extension UISearchBar {
.map { a in
return try castOrThrow(Int.self, a[1])
}
.startWith(index)
.startWith(elements: index)
}
let bindingObserver = UIBindingObserver(UIElement: self) { (searchBar, index: Int) in

View File

@ -30,7 +30,7 @@ extension UISearchController {
*/
public var rx_didDismiss: Observable<Void> {
return rx_delegate
.observe(selector: #selector(UISearchControllerDelegate.didDismiss(_:)))
.observe( #selector(UISearchControllerDelegate.didDismissSearchController(_:)))
.map {_ in}
}
/**
@ -38,7 +38,7 @@ extension UISearchController {
*/
public var rx_didPresent: Observable<Void> {
return rx_delegate
.observe(selector: #selector(UISearchControllerDelegate.didPresent(_:)))
.observe(#selector(UISearchControllerDelegate.didPresentSearchController(_:)))
.map {_ in}
}
/**
@ -46,7 +46,7 @@ extension UISearchController {
*/
public var rx_present: Observable<Void> {
return rx_delegate
.observe(selector: #selector(UISearchControllerDelegate.present(_:)))
.observe( #selector(UISearchControllerDelegate.presentSearchController(_:)))
.map {_ in}
}
/**
@ -54,7 +54,7 @@ extension UISearchController {
*/
public var rx_willDismiss: Observable<Void> {
return rx_delegate
.observe(selector: #selector(UISearchControllerDelegate.willDismiss(_:)))
.observe(#selector(UISearchControllerDelegate.willDismissSearchController(_:)))
.map {_ in}
}
/**
@ -62,7 +62,7 @@ extension UISearchController {
*/
public var rx_willPresent: Observable<Void> {
return rx_delegate
.observe(selector: #selector(UISearchControllerDelegate.willPresent(_:)))
.observe( #selector(UISearchControllerDelegate.willPresentSearchController(_:)))
.map {_ in}
}

View File

@ -21,7 +21,7 @@ extension UISegmentedControl {
*/
public var rx_value: ControlProperty<Int> {
return UIControl.rx_value(
control: self,
self,
getter: { segmentedControl in
segmentedControl.selectedSegmentIndex
}, setter: { segmentedControl, value in

View File

@ -21,7 +21,7 @@ extension UISlider {
*/
public var rx_value: ControlProperty<Float> {
return UIControl.rx_value(
control: self,
self,
getter: { slider in
slider.value
}, setter: { slider, value in

View File

@ -21,7 +21,7 @@ extension UIStepper {
*/
public var rx_value: ControlProperty<Double> {
return UIControl.rx_value(
control: self,
self,
getter: { stepper in
stepper.value
}, setter: { stepper, value in

View File

@ -23,9 +23,9 @@ extension UISwitch {
return UIControl.rx_value(
self,
getter: { uiSwitch in
uiSwitch.on
uiSwitch.isOn
}, setter: { uiSwitch, value in
uiSwitch.on = value
uiSwitch.isOn = value
}
)
}

View File

@ -25,9 +25,9 @@ extension UITableView {
- parameter cellFactory: Transform between sequence elements and view cells.
- returns: Disposable object that can be used to unbind.
*/
public func rx_itemsWithCellFactory<S: SequenceType, O: ObservableType where O.E == S>
(source: O)
-> (cellFactory: (UITableView, Int, S.Generator.Element) -> UITableViewCell)
public func rx_itemsWithCellFactory<S: Sequence, O: ObservableType where O.E == S>
(_ source: O)
-> (cellFactory: (UITableView, Int, S.Iterator.Element) -> UITableViewCell)
-> Disposable {
return { cellFactory in
let dataSource = RxTableViewReactiveArrayDataSourceSequenceWrapper<S>(cellFactory: cellFactory)
@ -45,16 +45,16 @@ extension UITableView {
- parameter cellType: Type of table view cell.
- returns: Disposable object that can be used to unbind.
*/
public func rx_itemsWithCellIdentifier<S: SequenceType, Cell: UITableViewCell, O : ObservableType where O.E == S>
(cellIdentifier: String, cellType: Cell.Type = Cell.self)
public func rx_itemsWithCellIdentifier<S: Sequence, Cell: UITableViewCell, O : ObservableType where O.E == S>
(_ cellIdentifier: String, cellType: Cell.Type = Cell.self)
-> (source: O)
-> (configureCell: (Int, S.Generator.Element, Cell) -> Void)
-> (configureCell: (Int, S.Iterator.Element, Cell) -> Void)
-> Disposable {
return { source in
return { configureCell in
let dataSource = RxTableViewReactiveArrayDataSourceSequenceWrapper<S> { (tv, i, item) in
let indexPath = NSIndexPath(forItem: i, inSection: 0)
let cell = tv.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! Cell
let indexPath = IndexPath(item: i, section: 0)
let cell = tv.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! Cell
configureCell(i, item, cell)
return cell
}
@ -74,7 +74,7 @@ extension UITableView {
DataSource: protocol<RxTableViewDataSourceType, UITableViewDataSource>,
O: ObservableType where DataSource.Element == O.E
>
(dataSource: DataSource)
(_ dataSource: DataSource)
-> (source: O)
-> Disposable {
return { source in
@ -125,7 +125,7 @@ extension UITableView {
- parameter dataSource: Data source object.
- returns: Disposable object that can be used to unbind the data source.
*/
public func rx_setDataSource(dataSource: UITableViewDataSource)
public func rx_setDataSource(_ dataSource: UITableViewDataSource)
-> Disposable {
return RxTableViewDataSourceProxy.installForwardDelegate(dataSource, retainDelegate: false, onProxyForObject: self)
}
@ -135,10 +135,10 @@ extension UITableView {
/**
Reactive wrapper for `delegate` message `tableView:didSelectRowAtIndexPath:`.
*/
public var rx_itemSelected: ControlEvent<NSIndexPath> {
let source = rx_delegate.observe(#selector(UITableViewDelegate.tableView(_:didSelectRowAtIndexPath:)))
public var rx_itemSelected: ControlEvent<IndexPath> {
let source = rx_delegate.observe(#selector(UITableViewDelegate.tableView(_:didSelectRowAt:)))
.map { a in
return try castOrThrow(NSIndexPath.self, a[1])
return try castOrThrow(IndexPath.self, a[1])
}
return ControlEvent(events: source)
@ -147,10 +147,10 @@ extension UITableView {
/**
Reactive wrapper for `delegate` message `tableView:didDeselectRowAtIndexPath:`.
*/
public var rx_itemDeselected: ControlEvent<NSIndexPath> {
let source = rx_delegate.observe(#selector(UITableViewDelegate.tableView(_:didDeselectRowAtIndexPath:)))
public var rx_itemDeselected: ControlEvent<IndexPath> {
let source = rx_delegate.observe(#selector(UITableViewDelegate.tableView(_:didDeselectRowAt:)))
.map { a in
return try castOrThrow(NSIndexPath.self, a[1])
return try castOrThrow(IndexPath.self, a[1])
}
return ControlEvent(events: source)
@ -159,10 +159,10 @@ extension UITableView {
/**
Reactive wrapper for `delegate` message `tableView:accessoryButtonTappedForRowWithIndexPath:`.
*/
public var rx_itemAccessoryButtonTapped: ControlEvent<NSIndexPath> {
let source: Observable<NSIndexPath> = rx_delegate.observe(#selector(UITableViewDelegate.tableView(_:accessoryButtonTappedForRowWithIndexPath:)))
public var rx_itemAccessoryButtonTapped: ControlEvent<IndexPath> {
let source: Observable<IndexPath> = rx_delegate.observe(#selector(UITableViewDelegate.tableView(_:accessoryButtonTappedForRowWith:)))
.map { a in
return try castOrThrow(NSIndexPath.self, a[1])
return try castOrThrow(IndexPath.self, a[1])
}
return ControlEvent(events: source)
@ -171,13 +171,13 @@ extension UITableView {
/**
Reactive wrapper for `delegate` message `tableView:commitEditingStyle:forRowAtIndexPath:`.
*/
public var rx_itemInserted: ControlEvent<NSIndexPath> {
let source = rx_dataSource.observe(#selector(UITableViewDataSource.tableView(_:commitEditingStyle:forRowAtIndexPath:)))
public var rx_itemInserted: ControlEvent<IndexPath> {
let source = rx_dataSource.observe(#selector(UITableViewDataSource.tableView(_:commit:forRowAt:)))
.filter { a in
return UITableViewCellEditingStyle(rawValue: (try castOrThrow(NSNumber.self, a[1])).integerValue) == .Insert
return UITableViewCellEditingStyle(rawValue: (try castOrThrow(NSNumber.self, a[1])).intValue) == .insert
}
.map { a in
return (try castOrThrow(NSIndexPath.self, a[2]))
return (try castOrThrow(IndexPath.self, a[2]))
}
return ControlEvent(events: source)
@ -186,13 +186,13 @@ extension UITableView {
/**
Reactive wrapper for `delegate` message `tableView:commitEditingStyle:forRowAtIndexPath:`.
*/
public var rx_itemDeleted: ControlEvent<NSIndexPath> {
let source = rx_dataSource.observe(#selector(UITableViewDataSource.tableView(_:commitEditingStyle:forRowAtIndexPath:)))
public var rx_itemDeleted: ControlEvent<IndexPath> {
let source = rx_dataSource.observe(#selector(UITableViewDataSource.tableView(_:commit:forRowAt:)))
.filter { a in
return UITableViewCellEditingStyle(rawValue: (try castOrThrow(NSNumber.self, a[1])).integerValue) == .Delete
return UITableViewCellEditingStyle(rawValue: (try castOrThrow(NSNumber.self, a[1])).intValue) == .delete
}
.map { a in
return try castOrThrow(NSIndexPath.self, a[2])
return try castOrThrow(IndexPath.self, a[2])
}
return ControlEvent(events: source)
@ -202,9 +202,9 @@ extension UITableView {
Reactive wrapper for `delegate` message `tableView:moveRowAtIndexPath:toIndexPath:`.
*/
public var rx_itemMoved: ControlEvent<ItemMovedEvent> {
let source: Observable<ItemMovedEvent> = rx_dataSource.observe(#selector(UITableViewDataSource.tableView(_:moveRowAtIndexPath:toIndexPath:)))
let source: Observable<ItemMovedEvent> = rx_dataSource.observe(#selector(UITableViewDataSource.tableView(_:moveRowAt:to:)))
.map { a in
return (try castOrThrow(NSIndexPath.self, a[1]), try castOrThrow(NSIndexPath.self, a[2]))
return (try castOrThrow(IndexPath.self, a[1]), try castOrThrow(IndexPath.self, a[2]))
}
return ControlEvent(events: source)
@ -214,9 +214,9 @@ extension UITableView {
Reactive wrapper for `delegate` message `tableView:willDisplayCell:forRowAtIndexPath:`.
*/
public var rx_willDisplayCell: ControlEvent<WillDisplayCellEvent> {
let source: Observable<DidEndDisplayingCellEvent> = rx_delegate.observe(#selector(UITableViewDelegate.tableView(_:willDisplayCell:forRowAtIndexPath:)))
let source: Observable<DidEndDisplayingCellEvent> = rx_delegate.observe(#selector(UITableViewDelegate.tableView(_:willDisplay:forRowAt:)))
.map { a in
return (try castOrThrow(UITableViewCell.self, a[1]), try castOrThrow(NSIndexPath.self, a[2]))
return (try castOrThrow(UITableViewCell.self, a[1]), try castOrThrow(IndexPath.self, a[2]))
}
return ControlEvent(events: source)
@ -226,9 +226,9 @@ extension UITableView {
Reactive wrapper for `delegate` message `tableView:didEndDisplayingCell:forRowAtIndexPath:`.
*/
public var rx_didEndDisplayingCell: ControlEvent<DidEndDisplayingCellEvent> {
let source: Observable<DidEndDisplayingCellEvent> = rx_delegate.observe(#selector(UITableViewDelegate.tableView(_:didEndDisplayingCell:forRowAtIndexPath:)))
let source: Observable<DidEndDisplayingCellEvent> = rx_delegate.observe(#selector(UITableViewDelegate.tableView(_:didEndDisplaying:forRowAt:)))
.map { a in
return (try castOrThrow(UITableViewCell.self, a[1]), try castOrThrow(NSIndexPath.self, a[2]))
return (try castOrThrow(UITableViewCell.self, a[1]), try castOrThrow(IndexPath.self, a[2]))
}
return ControlEvent(events: source)
@ -245,7 +245,7 @@ extension UITableView {
.map { ...
```
*/
public func rx_modelSelected<T>(modelType: T.Type) -> ControlEvent<T> {
public func rx_modelSelected<T>(_ modelType: T.Type) -> ControlEvent<T> {
let source: Observable<T> = rx_itemSelected.flatMap { [weak self] indexPath -> Observable<T> in
guard let view = self else {
return Observable.empty()
@ -268,7 +268,7 @@ extension UITableView {
.map { ...
```
*/
public func rx_modelDeselected<T>(modelType: T.Type) -> ControlEvent<T> {
public func rx_modelDeselected<T>(_ modelType: T.Type) -> ControlEvent<T> {
let source: Observable<T> = rx_itemDeselected.flatMap { [weak self] indexPath -> Observable<T> in
guard let view = self else {
return Observable.empty()
@ -283,7 +283,7 @@ extension UITableView {
/**
Synchronous helper method for retrieving a model at indexPath through a reactive data source.
*/
public func rx_modelAtIndexPath<T>(indexPath: NSIndexPath) throws -> T {
public func rx_modelAtIndexPath<T>(_ indexPath: IndexPath) throws -> T {
let dataSource: SectionedViewDataSourceType = castOrFatalError(self.rx_dataSource.forwardToDelegate(), message: "This method only works in case one of the `rx_items*` methods was used.")
let element = try dataSource.modelAtIndexPath(indexPath)

View File

@ -42,7 +42,7 @@ extension UITextView : RxTextInput {
// This observe on is here because text storage
// will emit event while process is not completely done,
// so rebinding a value will cause an exception to be thrown.
.observeOn(scheduler: MainScheduler.asyncInstance)
.observeOn(MainScheduler.asyncInstance)
.map { _ in
return self?.textStorage.string ?? ""
}

View File

@ -20,7 +20,7 @@ extension UIView {
*/
public var rx_hidden: AnyObserver<Bool> {
return UIBindingObserver(UIElement: self) { view, hidden in
view.hidden = hidden
view.isHidden = hidden
}.asObserver()
}

View File

@ -916,7 +916,7 @@
C8CC3EB01C95CB5300ABA17E /* RxTextViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTextViewDelegateProxy.swift; sourceTree = "<group>"; };
C8CC3EB11C95CB5300ABA17E /* UIActivityIndicatorView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIActivityIndicatorView+Rx.swift"; sourceTree = "<group>"; };
C8CC3EB21C95CB5300ABA17E /* UIApplication+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIApplication+Rx.swift"; sourceTree = "<group>"; };
C8CC3EB31C95CB5300ABA17E /* UIBarButtonItem+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIBarButtonItem+Rx.swift"; sourceTree = "<group>"; };
C8CC3EB31C95CB5300ABA17E /* UIBarButtonItem+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIBarButtonItem+Rx.swift"; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
C8CC3EB41C95CB5300ABA17E /* UIButton+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIButton+Rx.swift"; sourceTree = "<group>"; };
C8CC3EB51C95CB5300ABA17E /* UICollectionView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UICollectionView+Rx.swift"; sourceTree = "<group>"; };
C8CC3EB61C95CB5300ABA17E /* UIControl+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIControl+Rx.swift"; sourceTree = "<group>"; };

View File

@ -49,7 +49,7 @@ public struct AnyObserver<Element> : ObserverType {
- parameter event: Event instance.
*/
public func on(event: Event<Element>) {
public func on(_ event: Event<Element>) {
return self.observer(event)
}
@ -72,4 +72,4 @@ extension ObserverType {
public func asObserver() -> AnyObserver<E> {
return AnyObserver(self)
}
}
}

View File

@ -41,14 +41,14 @@ class AsyncLock<I: InvocableType>
}
// }
private func enqueue(action: I) -> I? {
private func enqueue(_ action: I) -> I? {
_lock.lock(); defer { _lock.unlock() } // {
if _hasFaulted {
return nil
}
if _isExecuting {
_queue.enqueue(element: action)
_queue.enqueue(action)
return nil
}
@ -70,8 +70,8 @@ class AsyncLock<I: InvocableType>
// }
}
func invoke(action: I) {
let firstEnqueuedAction = enqueue(action: action)
func invoke(_ action: I) {
let firstEnqueuedAction = enqueue(action)
if let firstEnqueuedAction = firstEnqueuedAction {
firstEnqueuedAction.invoke()

View File

@ -59,21 +59,21 @@ protocol Lock {
#else
// https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20151214/000321.html
typealias SpinLock = NSRecursiveLock
typealias SpinLock = RecursiveLock
#endif
extension NSRecursiveLock : Lock {
func performLocked(@noescape action: () -> Void) {
extension RecursiveLock : Lock {
func performLocked( _ action: @noescape() -> Void) {
lock(); defer { unlock() }
action()
}
func calculateLocked<T>(@noescape action: () -> T) -> T {
func calculateLocked<T>( _ action: @noescape() -> T) -> T {
lock(); defer { unlock() }
return action()
}
func calculateLockedOrFail<T>(@noescape action: () throws -> T) throws -> T {
func calculateLockedOrFail<T>( _ action: @noescape() throws -> T) throws -> T {
lock(); defer { unlock() }
let result = try action()
return result

View File

@ -9,7 +9,7 @@
import Foundation
protocol LockOwnerType : class, Lock {
var _lock: NSRecursiveLock { get }
var _lock: RecursiveLock { get }
}
extension LockOwnerType {
@ -20,4 +20,4 @@ extension LockOwnerType {
func unlock() {
_lock.unlock()
}
}
}

View File

@ -9,12 +9,12 @@
import Foundation
protocol SynchronizedOnType : class, ObserverType, Lock {
func _synchronized_on(event: Event<E>)
func _synchronized_on(_ event: Event<E>)
}
extension SynchronizedOnType {
func synchronizedOn(event: Event<E>) {
func synchronizedOn(_ event: Event<E>) {
lock(); defer { unlock() }
_synchronized_on(event: event)
_synchronized_on(event)
}
}
}

View File

@ -9,12 +9,12 @@
import Foundation
protocol SynchronizedSubscribeType : class, ObservableType, Lock {
func _synchronized_subscribe<O: ObserverType where O.E == E>(observer: O) -> Disposable
func _synchronized_subscribe<O: ObserverType where O.E == E>(_ observer: O) -> Disposable
}
extension SynchronizedSubscribeType {
func synchronizedSubscribe<O: ObserverType where O.E == E>(observer: O) -> Disposable {
func synchronizedSubscribe<O: ObserverType where O.E == E>(_ observer: O) -> Disposable {
lock(); defer { unlock() }
return _synchronized_subscribe(observer: observer)
return _synchronized_subscribe(observer)
}
}
}

View File

@ -11,5 +11,5 @@ import Foundation
protocol SynchronizedUnsubscribeType : class {
associatedtype DisposeKey
func synchronizedUnsubscribe(disposeKey: DisposeKey)
}
func synchronizedUnsubscribe(_ disposeKey: DisposeKey)
}

View File

@ -19,7 +19,7 @@ class Identity {
var _forceAllocation: Int32 = 0
}
func hash(_x: Int) -> Int {
func hash(_ _x: Int) -> Int {
var x = _x
x = ((x >> 16) ^ x) &* 0x45d9f3b
x = ((x >> 16) ^ x) &* 0x45d9f3b
@ -36,10 +36,10 @@ public struct BagKey : Hashable {
public var hashValue: Int {
if let uniqueIdentity = uniqueIdentity {
return hash(_x: key) ^ (unsafeAddress(of: uniqueIdentity).hashValue)
return hash(key) ^ (unsafeAddress(of: uniqueIdentity).hashValue)
}
else {
return hash(_x: key)
return hash(key)
}
}
}
@ -102,7 +102,7 @@ public struct Bag<T> : CustomDebugStringConvertible {
- parameter element: Element to insert.
- returns: Key that can be used to remove element from bag.
*/
public mutating func insert(element: T) -> BagKey {
public mutating func insert(_ element: T) -> BagKey {
_nextKey = _nextKey &+ 1
#if DEBUG
@ -174,7 +174,7 @@ public struct Bag<T> : CustomDebugStringConvertible {
- parameter key: Key that identifies element to remove from bag.
- returns: Element that bag contained, or nil in case element was already removed.
*/
public mutating func removeKey(key: BagKey) -> T? {
public mutating func removeKey(_ key: BagKey) -> T? {
if _key0 == key {
_key0 = nil
let value = _value0!
@ -223,7 +223,7 @@ extension Bag {
- parameter action: Enumeration closure.
*/
public func forEach(action: @noescape (T) -> Void) {
public func forEach(_ action: @noescape (T) -> Void) {
if _onlyFastPath {
if let value0 = _value0 {
action(value0)
@ -262,9 +262,9 @@ extension Bag where T: ObserverType {
- parameter action: Enumeration closure.
*/
public func on(event: Event<T.E>) {
public func on(_ event: Event<T.E>) {
if _onlyFastPath {
_value0?.on(event: event)
_value0?.on(event)
return
}
@ -274,20 +274,20 @@ extension Bag where T: ObserverType {
let dictionary = _dictionary
if let value0 = value0 {
value0.on(event: event)
value0.on(event)
}
if let value1 = value1 {
value1.on(event: event)
value1.on(event)
}
for i in 0 ..< pairs.count {
pairs[i].value.on(event: event)
pairs[i].value.on(event)
}
if dictionary?.count ?? 0 > 0 {
for element in dictionary!.values {
element.on(event: event)
element.on(event)
}
}
}
@ -296,7 +296,7 @@ extension Bag where T: ObserverType {
/**
Dispatches `dispose` to all disposables contained inside bag.
*/
public func disposeAllIn(bag: Bag<Disposable>) {
public func disposeAllIn(_ bag: Bag<Disposable>) {
if bag._onlyFastPath {
bag._value0?.dispose()
return

View File

@ -16,9 +16,9 @@ struct PriorityQueue<Element: AnyObject> {
_hasHigherPriority = hasHigherPriority
}
mutating func enqueue(element: Element) {
mutating func enqueue(_ element: Element) {
_elements.append(element)
bubbleToHigherPriority(initialUnbalancedIndex: _elements.count - 1)
bubbleToHigherPriority(_elements.count - 1)
}
func peek() -> Element? {
@ -34,21 +34,21 @@ struct PriorityQueue<Element: AnyObject> {
return nil
}
removeAt(index: 0)
removeAt(0)
return front
}
mutating func remove(element: Element) {
mutating func remove(_ element: Element) {
for i in 0 ..< _elements.count {
if _elements[i] === element {
removeAt(index: i)
removeAt(i)
return
}
}
}
private mutating func removeAt(index: Int) {
private mutating func removeAt(_ index: Int) {
let removingLast = index == _elements.count - 1
if !removingLast {
swap(&_elements[index], &_elements[_elements.count - 1])
@ -57,12 +57,12 @@ struct PriorityQueue<Element: AnyObject> {
_ = _elements.popLast()
if !removingLast {
bubbleToHigherPriority(initialUnbalancedIndex: index)
bubbleToLowerPriority(initialUnbalancedIndex: index)
bubbleToHigherPriority(index)
bubbleToLowerPriority(index)
}
}
private mutating func bubbleToHigherPriority(initialUnbalancedIndex: Int) {
private mutating func bubbleToHigherPriority(_ initialUnbalancedIndex: Int) {
precondition(initialUnbalancedIndex >= 0)
precondition(initialUnbalancedIndex < _elements.count)
@ -82,7 +82,7 @@ struct PriorityQueue<Element: AnyObject> {
}
}
private mutating func bubbleToLowerPriority(initialUnbalancedIndex: Int) {
private mutating func bubbleToLowerPriority(_ initialUnbalancedIndex: Int) {
precondition(initialUnbalancedIndex >= 0)
precondition(initialUnbalancedIndex < _elements.count)

View File

@ -68,7 +68,7 @@ public struct Queue<T>: Sequence {
return _storage[dequeueIndex]!
}
mutating private func resizeTo(size: Int) {
mutating private func resizeTo(_ size: Int) {
var newStorage = ContiguousArray<T?>(repeating: nil, count: size)
let count = _count
@ -94,9 +94,9 @@ public struct Queue<T>: Sequence {
- parameter element: Element to enqueue.
*/
public mutating func enqueue(element: T) {
public mutating func enqueue(_ element: T) {
if count == _storage.count {
resizeTo(size: Swift.max(_storage.count, 1) * _resizeFactor)
resizeTo(Swift.max(_storage.count, 1) * _resizeFactor)
}
_storage[_pushNextIndex] = element
@ -134,7 +134,7 @@ public struct Queue<T>: Sequence {
defer {
let downsizeLimit = _storage.count / (_resizeFactor * _resizeFactor)
if _count < downsizeLimit && downsizeLimit >= _initialCapacity {
resizeTo(size: _storage.count / _resizeFactor)
resizeTo(_storage.count / _resizeFactor)
}
}

View File

@ -32,8 +32,8 @@ public class CompositeDisposable : DisposeBase, Disposable, Cancelable {
*/
public init(_ disposable1: Disposable, _ disposable2: Disposable) {
// This overload is here to make sure we are using optimized version up to 4 arguments.
_disposables!.insert(disposable1)
_disposables!.insert(disposable2)
let _ = _disposables!.insert(disposable1)
let _ = _disposables!.insert(disposable2)
}
/**
@ -41,9 +41,9 @@ public class CompositeDisposable : DisposeBase, Disposable, Cancelable {
*/
public init(_ disposable1: Disposable, _ disposable2: Disposable, _ disposable3: Disposable) {
// This overload is here to make sure we are using optimized version up to 4 arguments.
_disposables!.insert(disposable1)
_disposables!.insert(disposable2)
_disposables!.insert(disposable3)
let _ = _disposables!.insert(disposable1)
let _ = _disposables!.insert(disposable2)
let _ = _disposables!.insert(disposable3)
}
/**
@ -51,13 +51,13 @@ public class CompositeDisposable : DisposeBase, Disposable, Cancelable {
*/
public init(_ disposable1: Disposable, _ disposable2: Disposable, _ disposable3: Disposable, _ disposable4: Disposable, _ disposables: Disposable...) {
// This overload is here to make sure we are using optimized version up to 4 arguments.
_disposables!.insert(disposable1)
_disposables!.insert(disposable2)
_disposables!.insert(disposable3)
_disposables!.insert(disposable4)
let _ = _disposables!.insert(disposable1)
let _ = _disposables!.insert(disposable2)
let _ = _disposables!.insert(disposable3)
let _ = _disposables!.insert(disposable4)
for disposable in disposables {
_disposables!.insert(disposable)
let _ = _disposables!.insert(disposable)
}
}
@ -66,7 +66,7 @@ public class CompositeDisposable : DisposeBase, Disposable, Cancelable {
*/
public init(disposables: [Disposable]) {
for disposable in disposables {
_disposables!.insert(disposable)
let _ = _disposables!.insert(disposable)
}
}
@ -77,7 +77,7 @@ public class CompositeDisposable : DisposeBase, Disposable, Cancelable {
- returns: Key that can be used to remove disposable from composite disposable. In case dispose bag was already
disposed `nil` will be returned.
*/
public func addDisposable(disposable: Disposable) -> DisposeKey? {
public func addDisposable(_ disposable: Disposable) -> DisposeKey? {
let key = _addDisposable(disposable)
if key == nil {
@ -87,7 +87,7 @@ public class CompositeDisposable : DisposeBase, Disposable, Cancelable {
return key
}
private func _addDisposable(disposable: Disposable) -> DisposeKey? {
private func _addDisposable(_ disposable: Disposable) -> DisposeKey? {
_lock.lock(); defer { _lock.unlock() }
return _disposables?.insert(disposable)
@ -106,11 +106,11 @@ public class CompositeDisposable : DisposeBase, Disposable, Cancelable {
- parameter disposeKey: Key used to identify disposable to be removed.
*/
public func removeDisposable(disposeKey: DisposeKey) {
public func removeDisposable(_ disposeKey: DisposeKey) {
_removeDisposable(disposeKey)?.dispose()
}
private func _removeDisposable(disposeKey: DisposeKey) -> Disposable? {
private func _removeDisposable(_ disposeKey: DisposeKey) -> Disposable? {
_lock.lock(); defer { _lock.unlock() }
return _disposables?.removeKey(disposeKey)
}
@ -132,4 +132,4 @@ public class CompositeDisposable : DisposeBase, Disposable, Cancelable {
return disposeBag
}
}
}

View File

@ -14,8 +14,8 @@ extension Disposable {
- parameter bag: `DisposeBag` to add `self` to.
*/
public func addDisposableTo(bag: DisposeBag) {
bag.addDisposable(disposable: self)
public func addDisposableTo(_ bag: DisposeBag) {
bag.addDisposable(self)
}
}
@ -51,11 +51,11 @@ public class DisposeBag: DisposeBase {
- parameter disposable: Disposable to add.
*/
public func addDisposable(disposable: Disposable) {
_addDisposable(disposable: disposable)?.dispose()
public func addDisposable(_ disposable: Disposable) {
_addDisposable(disposable)?.dispose()
}
private func _addDisposable(disposable: Disposable) -> Disposable? {
private func _addDisposable(_ disposable: Disposable) -> Disposable? {
_lock.lock(); defer { _lock.unlock() }
if _disposed {
return disposable
@ -91,4 +91,4 @@ public class DisposeBag: DisposeBase {
deinit {
dispose()
}
}
}

View File

@ -14,13 +14,13 @@ Base class for all disposables.
public class DisposeBase {
init() {
#if TRACE_RESOURCES
AtomicIncrement(&resourceCount)
let _ = AtomicIncrement(&resourceCount)
#endif
}
deinit {
#if TRACE_RESOURCES
AtomicDecrement(&resourceCount)
let _ = AtomicDecrement(&resourceCount)
#endif
}
}
}

View File

@ -43,7 +43,7 @@ public class RefCountDisposable : DisposeBase, Cancelable {
if let _ = _disposable {
do {
try incrementChecked(i: &_count)
let _ = try incrementChecked(&_count)
} catch (_) {
rxFatalError("RefCountDisposable increment failed")
}
@ -83,7 +83,7 @@ public class RefCountDisposable : DisposeBase, Cancelable {
let oldDisposable: Disposable? = _lock.calculateLocked {
if let oldDisposable = _disposable {
do {
try decrementChecked(i: &_count)
let _ = try decrementChecked(&_count)
} catch (_) {
rxFatalError("RefCountDisposable decrement on release failed")
}

View File

@ -46,7 +46,7 @@ public class ScheduledDisposable : Cancelable {
Disposes the wrapped disposable on the provided scheduler.
*/
public func dispose() {
scheduler.schedule(state: self, action: disposeScheduledDisposable)
let _ = scheduler.schedule(self, action: disposeScheduledDisposable)
}
func disposeInner() {

View File

@ -46,11 +46,11 @@ public class SingleAssignmentDisposable : DisposeBase, Disposable, Cancelable {
return _disposable ?? NopDisposable.instance
}
set {
_setDisposable(newValue: newValue)?.dispose()
_setDisposable(newValue)?.dispose()
}
}
private func _setDisposable(newValue: Disposable) -> Disposable? {
private func _setDisposable(_ newValue: Disposable) -> Disposable? {
_lock.lock(); defer { _lock.unlock() }
if _disposableSet {
rxFatalError("oldState.disposable != nil")

View File

@ -18,6 +18,6 @@ struct SubscriptionDisposable<T: SynchronizedUnsubscribeType> : Disposable {
}
func dispose() {
_owner?.synchronizedUnsubscribe(disposeKey: _key)
_owner?.synchronizedUnsubscribe(_key)
}
}
}

View File

@ -20,31 +20,31 @@ public enum RxError
/**
Unknown error occured.
*/
case Unknown
case unknown
/**
Performing an action on disposed object.
*/
case Disposed(object: AnyObject)
case disposed(object: AnyObject)
/**
Aritmetic overflow error.
*/
case Overflow
case overflow
/**
Argument out of range error.
*/
case ArgumentOutOfRange
case argumentOutOfRange
/**
Sequence doesn't contain any elements.
*/
case NoElements
case noElements
/**
Sequence contains more than one element.
*/
case MoreThanOneElement
case moreThanOneElement
/**
Timeout error.
*/
case Timeout
case timeout
}
public extension RxError {
@ -53,20 +53,20 @@ public extension RxError {
*/
public var debugDescription: String {
switch self {
case .Unknown:
case .unknown:
return "Unknown error occured."
case .Disposed(let object):
case .disposed(let object):
return "Object `\(object)` was already disposed."
case .Overflow:
case .overflow:
return "Arithmetic overflow occured."
case .ArgumentOutOfRange:
case .argumentOutOfRange:
return "Argument out of range."
case .NoElements:
case .noElements:
return "Sequence doesn't contain any elements."
case .MoreThanOneElement:
case .moreThanOneElement:
return "Sequence contains more than one element."
case .Timeout:
case .timeout:
return "Sequence timeout."
}
}
}
}

View File

@ -16,24 +16,24 @@ Next\* (Error | Completed)
*/
public enum Event<Element> {
/// Next element is produced.
case Next(Element)
case next(Element)
/// Sequence terminated with an error.
case Error(ErrorType)
case error(ErrorProtocol)
/// Sequence completed successfully.
case Completed
case completed
}
extension Event : CustomDebugStringConvertible {
/// - returns: Description of event.
public var debugDescription: String {
switch self {
case .Next(let value):
case .next(let value):
return "Next(\(value))"
case .Error(let error):
case .error(let error):
return "Error(\(error))"
case .Completed:
case .completed:
return "Completed"
}
}
@ -43,22 +43,22 @@ extension Event {
/// - returns: Is `Completed` or `Error` event.
public var isStopEvent: Bool {
switch self {
case .Next: return false
case .Error, .Completed: return true
case .next: return false
case .error, .completed: return true
}
}
/// - returns: If `Next` event, returns element value.
public var element: Element? {
if case .Next(let value) = self {
if case .next(let value) = self {
return value
}
return nil
}
/// - returns: If `Error` event, returns error.
public var error: ErrorType? {
if case .Error(let error) = self {
public var error: ErrorProtocol? {
if case .error(let error) = self {
return error
}
return nil

View File

@ -12,10 +12,10 @@ extension String {
/**
This is needed because on Linux Swift doesn't have `rangeOfString(..., options: .BackwardsSearch)`
*/
func lastIndexOf(character: Character) -> Index? {
func lastIndexOf(_ character: Character) -> Index? {
var index = endIndex
while index > startIndex {
index = index.predecessor()
index = self.index(before: index)
if self[index] == character {
return index
}
@ -23,4 +23,4 @@ extension String {
return nil
}
}
}

View File

@ -19,7 +19,7 @@ public protocol ImmediateSchedulerType {
- parameter action: Action to be executed.
- returns: The disposable object used to cancel the scheduled action (best effort).
*/
func schedule<StateType>(state: StateType, action: (StateType) -> Disposable) -> Disposable
func schedule<StateType>(_ state: StateType, action: (StateType) -> Disposable) -> Disposable
}
extension ImmediateSchedulerType {
@ -30,10 +30,10 @@ extension ImmediateSchedulerType {
- parameter action: Action to execute recursively. The last parameter passed to the action is used to trigger recursive scheduling of the action, passing in recursive invocation state.
- returns: The disposable object used to cancel the scheduled action (best effort).
*/
public func scheduleRecursive<State>(state: State, action: (state: State, recurse: (State) -> ()) -> ()) -> Disposable {
public func scheduleRecursive<State>(_ state: State, action: (state: State, recurse: (State) -> ()) -> ()) -> Disposable {
let recursiveScheduler = RecursiveImmediateScheduler(action: action, scheduler: self)
recursiveScheduler.schedule(state: state)
recursiveScheduler.schedule(state)
return AnonymousDisposable(recursiveScheduler.dispose)
}

View File

@ -16,12 +16,12 @@ extension ObservableType {
- returns: Subscription object used to unsubscribe from the observable sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func subscribe(on: (event: Event<E>) -> Void)
public func subscribe(_ on: (event: Event<E>) -> Void)
-> Disposable {
let observer = AnonymousObserver { e in
on(event: e)
}
return self.subscribeSafe(observer: observer)
return self.subscribeSafe(observer)
}
/**
@ -35,7 +35,7 @@ extension ObservableType {
- returns: Subscription object used to unsubscribe from the observable sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func subscribe(onNext: ((E) -> Void)? = nil, onError: ((ErrorProtocol) -> Void)? = nil, onCompleted: (() -> Void)? = nil, onDisposed: (() -> Void)? = nil)
public func subscribe(_ onNext: ((E) -> Void)? = nil, onError: ((ErrorProtocol) -> Void)? = nil, onCompleted: (() -> Void)? = nil, onDisposed: (() -> Void)? = nil)
-> Disposable {
let disposable: Disposable
@ -49,18 +49,18 @@ extension ObservableType {
let observer = AnonymousObserver<E> { e in
switch e {
case .Next(let value):
case .next(let value):
onNext?(value)
case .Error(let e):
case .error(let e):
onError?(e)
disposable.dispose()
case .Completed:
case .completed:
onCompleted?()
disposable.dispose()
}
}
return BinaryDisposable(
self.subscribeSafe(observer: observer),
self.subscribeSafe(observer),
disposable
)
}
@ -72,14 +72,14 @@ extension ObservableType {
- returns: Subscription object used to unsubscribe from the observable sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func subscribeNext(onNext: (E) -> Void)
public func subscribeNext(_ onNext: (E) -> Void)
-> Disposable {
let observer = AnonymousObserver<E> { e in
if case .Next(let value) = e {
if case .next(let value) = e {
onNext(value)
}
}
return self.subscribeSafe(observer: observer)
return self.subscribeSafe(observer)
}
/**
@ -89,14 +89,14 @@ extension ObservableType {
- returns: Subscription object used to unsubscribe from the observable sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func subscribeError(onError: (ErrorProtocol) -> Void)
public func subscribeError(_ onError: (ErrorProtocol) -> Void)
-> Disposable {
let observer = AnonymousObserver<E> { e in
if case .Error(let error) = e {
if case .error(let error) = e {
onError(error)
}
}
return self.subscribeSafe(observer: observer)
return self.subscribeSafe(observer)
}
/**
@ -106,14 +106,14 @@ extension ObservableType {
- returns: Subscription object used to unsubscribe from the observable sequence.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
public func subscribeCompleted(onCompleted: () -> Void)
public func subscribeCompleted(_ onCompleted: () -> Void)
-> Disposable {
let observer = AnonymousObserver<E> { e in
if case .Completed = e {
if case .completed = e {
onCompleted()
}
}
return self.subscribeSafe(observer: observer)
return self.subscribeSafe(observer)
}
}
@ -122,7 +122,7 @@ public extension ObservableType {
All internal subscribe calls go through this method.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
func subscribeSafe<O: ObserverType where O.E == E>(observer: O) -> Disposable {
return self.asObservable().subscribe(observer: observer)
func subscribeSafe<O: ObserverType where O.E == E>(_ observer: O) -> Disposable {
return self.asObservable().subscribe(observer)
}
}

View File

@ -25,7 +25,7 @@ public class Observable<Element> : ObservableType {
#endif
}
public func subscribe<O: ObserverType where O.E == E>(observer: O) -> Disposable {
public func subscribe<O: ObserverType where O.E == E>(_ observer: O) -> Disposable {
abstractMethod()
}
@ -35,7 +35,7 @@ public class Observable<Element> : ObservableType {
deinit {
#if TRACE_RESOURCES
AtomicDecrement(&resourceCount)
let _ = AtomicDecrement(&resourceCount)
#endif
}
@ -45,7 +45,7 @@ public class Observable<Element> : ObservableType {
/**
Optimizations for map operator
*/
internal func composeMap<R>(selector: (Element) throws -> R) -> Observable<R> {
internal func composeMap<R>(_ selector: (Element) throws -> R) -> Observable<R> {
return Map(source: self, selector: selector)
}
}

View File

@ -41,7 +41,7 @@ public protocol ObservableType : ObservableConvertibleType {
- returns: Subscription for `observer` that can be used to cancel production of sequence elements and free resources.
*/
@warn_unused_result(message: "http://git.io/rxs.ud")
func subscribe<O: ObserverType where O.E == E>(observer: O) -> Disposable
func subscribe<O: ObserverType where O.E == E>(_ observer: O) -> Disposable
}
@ -50,12 +50,12 @@ extension ObservableType {
/**
Default implementation of converting `ObservableType` to `Observable`.
*/
@warn_unused_result(message: "http://git.io/rxs.uo")
@warn_unused_result(message:"http://git.io/rxs.uo")
public func asObservable() -> Observable<E> {
// temporary workaround
//return Observable.create(subscribe: self.subscribe)
return Observable.create { o in
return self.subscribe(observer: o)
return self.subscribe(o)
}
}
}
}

View File

@ -15,12 +15,12 @@ class AddRefSink<O: ObserverType> : Sink<O>, ObserverType {
super.init(observer: observer)
}
func on(event: Event<Element>) {
func on(_ event: Event<Element>) {
switch event {
case .Next(_):
forwardOn(event: event)
case .Completed, .Error(_):
forwardOn(event: event)
case .next(_):
forwardOn(event)
case .completed, .error(_):
forwardOn(event)
dispose()
}
}
@ -37,11 +37,11 @@ class AddRef<Element> : Producer<Element> {
_refCount = refCount
}
override func run<O: ObserverType where O.E == Element>(observer: O) -> Disposable {
override func run<O: ObserverType where O.E == Element>(_ observer: O) -> Disposable {
let releaseDisposable = _refCount.retain()
let sink = AddRefSink(observer: observer)
sink.disposable = StableCompositeDisposable.create(releaseDisposable, _source.subscribeSafe(observer: sink))
sink.disposable = StableCompositeDisposable.create(releaseDisposable, _source.subscribeSafe(sink))
return sink
}
}
}

View File

@ -9,9 +9,9 @@
import Foundation
enum AmbState {
case Neither
case Left
case Right
case neither
case left
case right
}
class AmbObserver<ElementType, O: ObserverType where O.E == ElementType> : ObserverType {
@ -26,7 +26,7 @@ class AmbObserver<ElementType, O: ObserverType where O.E == ElementType> : Obser
init(parent: Parent, cancel: Disposable, sink: Sink) {
#if TRACE_RESOURCES
AtomicIncrement(&resourceCount)
let _ = AtomicIncrement(&resourceCount)
#endif
_parent = parent
@ -34,7 +34,7 @@ class AmbObserver<ElementType, O: ObserverType where O.E == ElementType> : Obser
_cancel = cancel
}
func on(event: Event<Element>) {
func on(_ event: Event<Element>) {
_sink(self, event)
if event.isStopEvent {
_cancel.dispose()
@ -43,7 +43,7 @@ class AmbObserver<ElementType, O: ObserverType where O.E == ElementType> : Obser
deinit {
#if TRACE_RESOURCES
AtomicDecrement(&resourceCount)
let _ = AtomicDecrement(&resourceCount)
#endif
}
}
@ -54,9 +54,9 @@ class AmbSink<ElementType, O: ObserverType where O.E == ElementType> : Sink<O> {
private let _parent: Parent
private let _lock = NSRecursiveLock()
private let _lock = RecursiveLock()
// state
private var _choice = AmbState.Neither
private var _choice = AmbState.neither
init(parent: Parent, observer: O) {
_parent = parent
@ -69,12 +69,12 @@ class AmbSink<ElementType, O: ObserverType where O.E == ElementType> : Sink<O> {
let disposeAll = StableCompositeDisposable.create(subscription1, subscription2)
let forwardEvent = { (o: AmbObserverType, event: Event<ElementType>) -> Void in
self.forwardOn(event: event)
self.forwardOn(event)
}
let decide = { (o: AmbObserverType, event: Event<ElementType>, me: AmbState, otherSubscription: Disposable) in
self._lock.performLocked {
if self._choice == .Neither {
if self._choice == .neither {
self._choice = me
o._sink = forwardEvent
o._cancel = disposeAll
@ -82,7 +82,7 @@ class AmbSink<ElementType, O: ObserverType where O.E == ElementType> : Sink<O> {
}
if self._choice == me {
self.forwardOn(event: event)
self.forwardOn(event)
if event.isStopEvent {
self.dispose()
}
@ -91,15 +91,15 @@ class AmbSink<ElementType, O: ObserverType where O.E == ElementType> : Sink<O> {
}
let sink1 = AmbObserver(parent: self, cancel: subscription1) { o, e in
decide(o, e, .Left, subscription2)
decide(o, e, .left, subscription2)
}
let sink2 = AmbObserver(parent: self, cancel: subscription1) { o, e in
decide(o, e, .Right, subscription1)
decide(o, e, .right, subscription1)
}
subscription1.disposable = _parent._left.subscribe(observer: sink1)
subscription2.disposable = _parent._right.subscribe(observer: sink2)
subscription1.disposable = _parent._left.subscribe(sink1)
subscription2.disposable = _parent._right.subscribe(sink2)
return disposeAll
}
@ -114,9 +114,9 @@ class Amb<Element>: Producer<Element> {
_right = right
}
override func run<O : ObserverType where O.E == Element>(observer: O) -> Disposable {
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
let sink = AmbSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
}
}
}

View File

@ -19,22 +19,22 @@ class AnonymousObservableSink<O: ObserverType> : Sink<O>, ObserverType {
super.init(observer: observer)
}
func on(event: Event<E>) {
func on(_ event: Event<E>) {
switch event {
case .Next:
case .next:
if _isStopped == 1 {
return
}
forwardOn(event: event)
case .Error, .Completed:
forwardOn(event)
case .error, .completed:
if AtomicCompareAndSwap(0, 1, &_isStopped) {
forwardOn(event: event)
forwardOn(event)
dispose()
}
}
}
func run(parent: Parent) -> Disposable {
func run(_ parent: Parent) -> Disposable {
return parent._subscribeHandler(AnyObserver(self))
}
}
@ -48,9 +48,9 @@ class AnonymousObservable<Element> : Producer<Element> {
_subscribeHandler = subscribeHandler
}
override func run<O : ObserverType where O.E == Element>(observer: O) -> Disposable {
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
let sink = AnonymousObservableSink(observer: observer)
sink.disposable = sink.run(parent: self)
sink.disposable = sink.run(self)
return sink
}
}

View File

@ -22,7 +22,7 @@ class BufferTimeCount<Element> : Producer<[Element]> {
_scheduler = scheduler
}
override func run<O : ObserverType where O.E == [Element]>(observer: O) -> Disposable {
override func run<O : ObserverType where O.E == [Element]>(_ observer: O) -> Disposable {
let sink = BufferTimeCountSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
@ -39,7 +39,7 @@ class BufferTimeCountSink<Element, O: ObserverType where O.E == [Element]>
private let _parent: Parent
let _lock = NSRecursiveLock()
let _lock = RecursiveLock()
// state
private let _timerD = SerialDisposable()
@ -52,8 +52,8 @@ class BufferTimeCountSink<Element, O: ObserverType where O.E == [Element]>
}
func run() -> Disposable {
createTimer(windowID: _windowID)
return StableCompositeDisposable.create(_timerD, _parent._source.subscribe(observer: self))
createTimer(_windowID)
return StableCompositeDisposable.create(_timerD, _parent._source.subscribe(self))
}
func startNewWindowAndSendCurrentOne() {
@ -62,36 +62,36 @@ class BufferTimeCountSink<Element, O: ObserverType where O.E == [Element]>
let buffer = _buffer
_buffer = []
forwardOn(event: .Next(buffer))
forwardOn(.next(buffer))
createTimer(windowID: windowID)
createTimer(windowID)
}
func on(event: Event<E>) {
synchronizedOn(event: event)
func on(_ event: Event<E>) {
synchronizedOn(event)
}
func _synchronized_on(event: Event<E>) {
func _synchronized_on(_ event: Event<E>) {
switch event {
case .Next(let element):
case .next(let element):
_buffer.append(element)
if _buffer.count == _parent._count {
startNewWindowAndSendCurrentOne()
}
case .Error(let error):
case .error(let error):
_buffer = []
forwardOn(event: .Error(error))
forwardOn(.error(error))
dispose()
case .Completed:
forwardOn(event: .Next(_buffer))
forwardOn(event: .Completed)
case .completed:
forwardOn(.next(_buffer))
forwardOn(.completed)
dispose()
}
}
func createTimer(windowID: Int) {
func createTimer(_ windowID: Int) {
if _timerD.disposed {
return
}
@ -104,7 +104,7 @@ class BufferTimeCountSink<Element, O: ObserverType where O.E == [Element]>
_timerD.disposable = nextTimer
nextTimer.disposable = _parent._scheduler.scheduleRelative(state: windowID, dueTime: _parent._timeSpan) { previousWindowID in
nextTimer.disposable = _parent._scheduler.scheduleRelative(windowID, dueTime: _parent._timeSpan) { previousWindowID in
self._lock.performLocked {
if previousWindowID != self._windowID {
return
@ -116,4 +116,4 @@ class BufferTimeCountSink<Element, O: ObserverType where O.E == [Element]>
return NopDisposable.instance
}
}
}
}

View File

@ -20,13 +20,13 @@ class CatchSinkProxy<O: ObserverType> : ObserverType {
_parent = parent
}
func on(event: Event<E>) {
_parent.forwardOn(event: event)
func on(_ event: Event<E>) {
_parent.forwardOn(event)
switch event {
case .Next:
case .next:
break
case .Error, .Completed:
case .error, .completed:
_parent.dispose()
}
}
@ -47,28 +47,28 @@ class CatchSink<O: ObserverType> : Sink<O>, ObserverType {
func run() -> Disposable {
let d1 = SingleAssignmentDisposable()
_subscription.disposable = d1
d1.disposable = _parent._source.subscribe(observer: self)
d1.disposable = _parent._source.subscribe(self)
return _subscription
}
func on(event: Event<E>) {
func on(_ event: Event<E>) {
switch event {
case .Next:
forwardOn(event: event)
case .Completed:
forwardOn(event: event)
case .next:
forwardOn(event)
case .completed:
forwardOn(event)
dispose()
case .Error(let error):
case .error(let error):
do {
let catchSequence = try _parent._handler(error)
let observer = CatchSinkProxy(parent: self)
_subscription.disposable = catchSequence.subscribe(observer: observer)
_subscription.disposable = catchSequence.subscribe(observer)
}
catch let e {
forwardOn(event: .Error(e))
forwardOn(.error(e))
dispose()
}
}
@ -86,7 +86,7 @@ class Catch<Element> : Producer<Element> {
_handler = handler
}
override func run<O: ObserverType where O.E == Element>(observer: O) -> Disposable {
override func run<O: ObserverType where O.E == Element>(_ observer: O) -> Disposable {
let sink = CatchSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
@ -107,35 +107,35 @@ class CatchSequenceSink<S: Sequence, O: ObserverType where S.Iterator.Element :
super.init(observer: observer)
}
func on(event: Event<Element>) {
func on(_ event: Event<Element>) {
switch event {
case .Next:
forwardOn(event: event)
case .Error(let error):
case .next:
forwardOn(event)
case .error(let error):
_lastError = error
schedule(command: .MoveNext)
case .Completed:
forwardOn(event: event)
schedule(.moveNext)
case .completed:
forwardOn(event)
dispose()
}
}
override func subscribeToNext(source: Observable<E>) -> Disposable {
return source.subscribe(observer: self)
override func subscribeToNext(_ source: Observable<E>) -> Disposable {
return source.subscribe(self)
}
override func done() {
if let lastError = _lastError {
forwardOn(event: .Error(lastError))
forwardOn(.error(lastError))
}
else {
forwardOn(event: .Completed)
forwardOn(.completed)
}
self.dispose()
}
override func extract(observable: Observable<Element>) -> SequenceGenerator? {
override func extract(_ observable: Observable<Element>) -> SequenceGenerator? {
if let onError = observable as? CatchSequence<S> {
return (onError.sources.makeIterator(), nil)
}
@ -154,9 +154,9 @@ class CatchSequence<S: Sequence where S.Iterator.Element : ObservableConvertible
self.sources = sources
}
override func run<O : ObserverType where O.E == Element>(observer: O) -> Disposable {
override func run<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
let sink = CatchSequenceSink<S, O>(observer: observer)
sink.disposable = sink.run(sources: (self.sources.makeIterator(), nil))
sink.disposable = sink.run((self.sources.makeIterator(), nil))
return sink
}
}
}

View File

@ -15,7 +15,7 @@ class CombineLatestCollectionTypeSink<C: Collection, R, O: ObserverType where C.
let _parent: Parent
let _lock = NSRecursiveLock()
let _lock = RecursiveLock()
// state
var _numberOfValues = 0
@ -38,10 +38,10 @@ class CombineLatestCollectionTypeSink<C: Collection, R, O: ObserverType where C.
super.init(observer: observer)
}
func on(event: Event<SourceElement>, atIndex: Int) {
func on(_ event: Event<SourceElement>, atIndex: Int) {
_lock.lock(); defer { _lock.unlock() } // {
switch event {
case .Next(let element):
case .next(let element):
if _values[atIndex] == nil {
_numberOfValues += 1
}
@ -51,7 +51,7 @@ class CombineLatestCollectionTypeSink<C: Collection, R, O: ObserverType where C.
if _numberOfValues < _parent._count {
let numberOfOthersThatAreDone = self._numberOfDone - (_isDone[atIndex] ? 1 : 0)
if numberOfOthersThatAreDone == self._parent._count - 1 {
forwardOn(event: .Completed)
forwardOn(.completed)
dispose()
}
return
@ -59,17 +59,17 @@ class CombineLatestCollectionTypeSink<C: Collection, R, O: ObserverType where C.
do {
let result = try _parent._resultSelector(_values.map { $0! })
forwardOn(event: .Next(result))
forwardOn(.next(result))
}
catch let error {
forwardOn(event: .Error(error))
forwardOn(.error(error))
dispose()
}
case .Error(let error):
forwardOn(event: .Error(error))
case .error(let error):
forwardOn(.error(error))
dispose()
case .Completed:
case .completed:
if _isDone[atIndex] {
return
}
@ -78,7 +78,7 @@ class CombineLatestCollectionTypeSink<C: Collection, R, O: ObserverType where C.
_numberOfDone += 1
if _numberOfDone == self._parent._count {
forwardOn(event: .Completed)
forwardOn(.completed)
dispose()
}
else {
@ -93,8 +93,8 @@ class CombineLatestCollectionTypeSink<C: Collection, R, O: ObserverType where C.
for i in _parent._sources {
let index = j
let source = i.asObservable()
_subscriptions[j].disposable = source.subscribe(observer: AnyObserver { event in
self.on(event: event, atIndex: index)
_subscriptions[j].disposable = source.subscribe(AnyObserver { event in
self.on(event, atIndex: index)
})
j += 1
@ -117,9 +117,9 @@ class CombineLatestCollectionType<C: Collection, R where C.Iterator.Element : Ob
_count = Int(self._sources.count.toIntMax())
}
override func run<O : ObserverType where O.E == R>(observer: O) -> Disposable {
override func run<O : ObserverType where O.E == R>(_ observer: O) -> Disposable {
let sink = CombineLatestCollectionTypeSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
}
}
}

Some files were not shown because too many files have changed in this diff Show More