我试图列出用户可以添加到事件中的联系人,但是我想过滤结果,以免重复出现。因此,如果我添加了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)

10-07 19:13
查看更多