使用NSPredicate过滤RealmObject无法正常工作

时间:2018-02-09 16:07:50

标签: filter realm nspredicate

我有一个非常奇怪的问题。我想从领域中检索具有给定id的对象。如果我这样做:

Array(realm.objects(MyClass.self).filter(NSPredicate(format:"id == %d",id))).first

我没有,没有物品。

但如果我这样做:

Array(realm.objects(MyClass.self)).filter{$0.id == id}.first

我得到了对象!!

我会避免检索所有对象然后手动过滤,我会使用RealmSwift中提供的过滤方法。这是我第一次遇到这个问题! 任何提示?

1 个答案:

答案 0 :(得分:0)

首先,您应该使用%@而不是%d。其次,没有必要在NSPredicate内创建filter,您可以在那里简单地使用谓词语法。我们也无需将Results转换为Array

realm.objects(MyClass.self).filter("id == %@",id).first