我试图列出用户可以添加到事件中的联系人,但是我想过滤结果,以免重复出现。因此,如果我添加了John Doe,则他的联系人将不会出现在联系人列表中。我对NSPredicate不太了解,因此不知道这是最好的方法还是将Results数组转换为更易于使用的方法。
最佳答案
这是关于kotlin的示例,但是非常接近于迅速。
你可以做类似的事情。除了获取RealmResults外,您还可以获取按名称过滤的用户列表。
fun filteredUsers(){
val realm = Realm.getDefaultInstance()
realm.where(UserRealm::class.java)
.findAllAsync()
.asObservable()
.filter { users -> users.isLoaded }
.flatMap { users -> Observable.from(users) }
.filter { user -> !user.name.equals("John Doe") }
.observeOn(AndroidSchedulers.mainThread())
.doOnError { err -> err.printStackTrace() }
.toList()
.subscribe { userList -> print(userList) }
}
而且我在文档中发现了更快捷的快捷方式:
// Query using a predicate string
var tanDogs = realm.objects(Dog).filter("color = 'tan' AND name BEGINSWITH 'B'")
// Query using an NSPredicate
let predicate = NSPredicate(format: "color = %@ AND name BEGINSWITH %@", "tan", "B")
tanDogs = realm.objects(Dog).filter(predicate)