私はリアクティブプログラミングに慣れています。特定のインデックスからオブジェクトをフィルタリングしてアクセスするのが難しいです。以下は私のコードスニペットです。RxSwift/RxRealmでオブジェクトをフィルタリングできません
private var contacts: Observable<(AnyRealmCollection<Contact>, RealmChangeset?)>!
override func viewDidLoad() {
super.viewDidLoad()
contacts = Observable.changeset(from: contactViewModel.getDeviceContacts())
let dataSource = RxCollectionViewRealmDataSource<Contact>(cellIdentifier: "SendFeedContactCell", cellType: ContactCollectionCell.self) {cell, ip, contact in
cell.configure(contact)
}
contacts
.bindTo(collectionView.rx.realmChanges(dataSource))
.addDisposableTo(disposeBag)
searchBar
.rx.text
.orEmpty
.subscribe(onNext: { [unowned self] query in
// Filter query - doesn't work!
// self.contacts.filter({ (observable) -> Bool in
// observable.0.filter(NSPredicate(format: "name CONTAINS[c] '\(query)'"))
// })
})
.addDisposableTo(disposeBag)
collectionView.rx.itemSelected
.subscribe(onNext: { indexPath in
// TODO: How to access a specific object from the contacts object
})
.addDisposableTo(disposeBag)
}
私は検索バーに問い合わせを受け付けておりますが、フィルタリングが機能するように思われません。
コレクションビューでアイテムが選択されているときにインデックスパスを取得していますが、インデックスパスに基づいて特定のモデルプロパティにアクセスする方法が不思議です。
私のデータがデバイスにレルムデータベースに保存されているように私はRxRealmとRxRealmDataSourcesを使用しています。