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

m_k*_*kis 2 predicate realm ios swift

我有以下领域对象结构:

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

class NestedObject: Object {
    @objc dynamic var id: Int = 0
}
Run Code Online (Sandbox Code Playgroud)

是否可以过滤ParentObjects 以仅返回那些包含与数组中包含NestedObject的那些id匹配的s的那些?

我尝试这样做:

let ids = [1, 2, 3]

let filtered = realm
    .objects(ParentObject.self)
    .filter("nestedObjects.id IN %@", ids)
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:Terminating app due to uncaught exception 'Invalid predicate', reason: 'Key paths that include an array property must use aggregate operations'.

也许我应该尝试用多个ORs 而不是IN?

bda*_*ash 6

你想要一个 的谓词ANY nestedObjects.id IN %@。在ANY/ ALL/NONE修改很重要,因为它决定了该集合中的对象必须匹配谓词评估为true。