Files
OrderScheduling/Pods/RxCocoa/RxCocoa/Foundation/NSObject+Rx+RawRepresentable.swift
DDIsFriend f0e8a1709d initial
2023-08-18 17:28:57 +08:00

53 lines
1.7 KiB
Swift

//
// NSObject+Rx+RawRepresentable.swift
// RxCocoa
//
// Created by Krunoslav Zaher on 11/9/15.
// Copyright © 2015 Krunoslav Zaher. All rights reserved.
//
#if !os(Linux)
import RxSwift
import Foundation
extension Reactive where Base: NSObject {
/**
Specialization of generic `observe` method.
This specialization first observes `KVORepresentable` value and then converts it to `RawRepresentable` value.
It is useful for observing bridged ObjC enum values.
For more information take a look at `observe` method.
*/
public func observe<Element: RawRepresentable>(_ type: Element.Type, _ keyPath: String, options: KeyValueObservingOptions = [.new, .initial], retainSelf: Bool = true) -> Observable<Element?> where Element.RawValue: KVORepresentable {
return self.observe(Element.RawValue.KVOType.self, keyPath, options: options, retainSelf: retainSelf)
.map(Element.init)
}
}
#if !DISABLE_SWIZZLING
// observeWeakly + RawRepresentable
extension Reactive where Base: NSObject {
/**
Specialization of generic `observeWeakly` method.
This specialization first observes `KVORepresentable` value and then converts it to `RawRepresentable` value.
It is useful for observing bridged ObjC enum values.
For more information take a look at `observeWeakly` method.
*/
public func observeWeakly<Element: RawRepresentable>(_ type: Element.Type, _ keyPath: String, options: KeyValueObservingOptions = [.new, .initial]) -> Observable<Element?> where Element.RawValue: KVORepresentable {
return self.observeWeakly(Element.RawValue.KVOType.self, keyPath, options: options)
.map(Element.init)
}
}
#endif
#endif