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)
Check out the included demo app to see this in action.
// create data source
let dataSource = RxOutlineViewRealmDataSource<TreeItem>(cellIdentifier: "Title", cellType: NSTableCellView.self) {
cell, columnId, treeItem in
guard let columnId = columnId else { return }
switch columnId {
case "Title":
cell.textField!.stringValue = treeItem.title
case "Time":
cell.textField!.stringValue = "\(treeItem.time)"
default:
break
}
}
dataSource.delegate = self
// RxRealm to get Observable<Results>
let realm = try! Realm(configuration: data.config)
let items = Observable.changeset(from: realm.objects(TreeItem.self))
.share()
// bind to table view
items
.bind(to: outlineView.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", :git => 'https://github.com/serg-vinnie/RxRealmDataSources.git'
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.