diff --git a/Example/Observable/Views/CollectionView.swift b/Example/Observable/Views/CollectionView.swift index c978abb..cdb53e6 100644 --- a/Example/Observable/Views/CollectionView.swift +++ b/Example/Observable/Views/CollectionView.swift @@ -4,8 +4,9 @@ import Observable class CollectionView: UICollectionView { - @Observable private var sPercentage:Float = 0 + @MutableObservable private var sPercentage:Float = 0 + var scrollPercentage: Observable { var scrollPercentage: ImmutableObservable { return _sPercentage } diff --git a/Example/Observable/Views/Slider.swift b/Example/Observable/Views/Slider.swift index cc20d1a..d014497 100644 --- a/Example/Observable/Views/Slider.swift +++ b/Example/Observable/Views/Slider.swift @@ -4,9 +4,9 @@ import Observable class Slider: UISlider { - @Observable private var positionValue:CGFloat = 0 + @MutableObservable private var positionValue:CGFloat = 0 - var position:ImmutableObservable { + var position:Observable { return _positionValue } diff --git a/Observable/Classes/Observable.swift b/Observable/Classes/Observable.swift index 1bed49e..8b13e1f 100644 --- a/Observable/Classes/Observable.swift +++ b/Observable/Classes/Observable.swift @@ -1,6 +1,6 @@ import Foundation -public class ImmutableObservable { +public class Observable { public typealias Observer = (T, T?) -> Void @@ -61,12 +61,18 @@ public class ImmutableObservable { observers.removeAll() } - public func asImmutable() -> ImmutableObservable { + @available(*, deprecated, renamed: "asObservable") + public func asImmutable() -> Observable { + return self + } + + public func asObservable() -> Observable { return self } } + @propertyWrapper -public class Observable: ImmutableObservable { +public class MutableObservable: Observable { override public var wrappedValue: T { get { diff --git a/README.md b/README.md index 5bddd87..04976a9 100644 --- a/README.md +++ b/README.md @@ -5,27 +5,20 @@ **Observable** is the easiest way to observe values in Swift. ## How to - -### Create an Observable - -```swift -var position = Observable(CGPoint.zero) -``` - -### Create an ImmutableObservable -Using `ImmutableObservable` we can create an "readonly"-Observable, in order to avoid side-effects on our internal API. - +### Create an Observable and MutableObservable +Using `MutableObservable` you can create and observe event. +Using `Observable` you can observe event, in order to avoid side-effects on our internal API. ```swift class SomeViewModel { /// Public property, that can be read / observed by external classes (e.g. view controller), but not changed. - var position: ImmutableObservable = { + var position: Observable = { return positionSubject } - // Or use the helper method Observable.asImmutable() - // lazy var position = positionSubject.asImmutable() + // Or use the helper method Observable.asObservable() + // lazy var position = positionSubject.asObservable() /// Private property, that can be changed / observed inside this view model. - private let positionSubject = Observable(CGPoint.zero) + private let positionSubject = MutableObservable(CGPoint.zero) } ```