Most programmer will have no idea what reactive programming actually is. This is the reason why I will try to create a simple, how to use use the Swift Version of Rx: RxSwift. link: https://github.com/ReactiveX/RxSwift
its works on two things: Observable & Observer
• An Observable is something which emits notifications of change.
• An Observer or subscriber is something which subscribes to an Observable, in order to get receive notification
Firstly add following line in your pod file
pod 'RxSwift', '~> 3.0'
pod 'RxCocoa', '~> 3.0' and run pod install command on terminal
To deal with ARC and memory management RxSwift and RxCocoa use: the DisposeBag. This is a virtual “bag” of Observer objects which are disposed of when their parent object is deallocated.
Here is few Example how to use RXswift
1. searchBar with RX
@IBOutlet weak var searchBarArtist: UISearchBar!
override func viewDidLoad() {
super.viewDidLoad()
searchBarArtist
.rx.text // Observable property
.orEmpty // Make it non-optional
.debounce(0.3, scheduler: MainScheduler.instance) // Wait 0.3 for changes.
.distinctUntilChanged() // If they didn't occur, check if the new value is the same as old.
.subscribe(onNext: { query in // Here we subscribe to every new value
})
.addDisposableTo(disposeBag)
}
2. TextField with RX
let searchTxtField = UITextField()
let disposeBag = DisposeBag()
override func viewDidLoad() {
searchTxtField.rx.text.orEmpty.debounce(0.2, scheduler: MainScheduler.instance).distinctUntilChanged().subscribe(onNext: { [unowned self] query in
print(query)
}).disposed(by: disposeBag)
}
3. DataBinding with RX
let displayLabel = UILabel()
@IBOutlet weak var searchTxtField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
searchTxtField.rx.text.map { "Hello \(String(describing: $0))" }
.bind(to: displayLabel.rx.text)
}
4. Control Events with RX
let button = UIButton()
var disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
button.rx.tap.subscribe(onNext: { [unowned self] query in
print(query)
}).disposed(by: disposeBag)
}
Happy Coding!!!
#Xcode9 #iOS #Apple #Coding #iPhone
© 2017 Girijesh
In case if any query/Concern send me a email @girijeshkumar2007@gmail.com