An easy way to bind an RxRealm observable to a table or collection view
This library is currently WIP.
To run the example project, clone the repo, and run pod install
from the Example directory first.
This library is a light data source implementation for RxRealm
. It allows you to easily bind an Observable sequence of Realm objects to a table or a collection view. The library is both iOS and macOS compatible.
Check out the included demo app to see this in action.
// create data source
let dataSource = RxTableViewRealmDataSource<Lap>(cellIdentifier: "Cell", cellType: PersonCell.self) {cell, ip, lap in
cell.customLabel.text = "\(ip.row). \(lap.text)"
}
// RxRealm to get Observable<Results>
let realm = try! Realm(configuration: DataRandomizer.realmConfig)
let laps = Observable.changeset(from: realm.objects(Timer.self).first!.laps)
.share()
// bind to table view
laps
.bindTo(tableView.rx.realmChanges(dataSource))
.disposed(by: bag)
Check out the included demo app to see this in action.
// create data source
let dataSource = RxCollectionViewRealmDataSource<Lap>(cellIdentifier: "Cell", cellType: LapCollectionCell.self) {cell, ip, lap in
cell.customLabel.text = "\(ip.row). \(lap.text)"
}
// RxRealm to get Observable<Results>
let realm = try! Realm(configuration: DataRandomizer.realmConfig)
let laps = Observable.changeset(from: realm.objects(Timer.self).first!.laps)
.share()
// bind to collection view
laps
.bindTo(collectionView.rx.realmChanges(dataSource))
.disposed(by: bag)
The library adds an extension to table views and collection views, allowing you to easily subscribe to the cell selected delegate event. Here’s a snippet from the example demo app:
tableView.rx.realmModelSelected(Lap.self)
.map({ $0.text })
.bind(to: rx.title)
.disposed(by: bag)
This library depends on RxSwift, RealmSwift, and RxRealm.
RxRealm is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "RxRealmDataSources"
This library belongs to RxSwiftCommunity. It has been created by Marin Todorov.
RxRealm is available under the MIT license. See the LICENSE file for more info.