Realm Swift:使用IN谓词通过嵌套List属性过滤对象

时间:2017-12-12 19:28:21

标签: ios swift realm predicate

我有以下Realm Object结构:

class ParentObject: Object {
    let nestedObjects = List<NestedObject>
}

class NestedObject: Object {
    @objc dynamic var id: Int = 0
}

是否可以过滤ParentObject仅返回包含NestedObject匹配数组中包含的id之一的let ids = [1, 2, 3] let filtered = realm .objects(ParentObject.self) .filter("nestedObjects.id IN %@", ids) 的内容?

我试过这样做:

Terminating app due to uncaught exception 'Invalid predicate', reason: 'Key paths that include an array property must use aggregate operations'

但是我收到了这个错误:OR

也许我应该尝试使用多个IN代替DATEDIFF

1 个答案:

答案 0 :(得分:3)

您需要ANY nestedObjects.id IN %@的谓词。 ANY / ALL / NONE修饰符非常重要,因为它确定集合中有多少对象必须匹配才能使谓词评估为true。