предикат области с объектом внутри объекта - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть следующие объекты Realm

class Patient: Object {

    @objc dynamic var name: String?
    let list = List<RString>()
}

class RString: Object {

    @objc dynamic var stringValue: String?

}

Мне нужно отфильтровать Patient объекты, которые имеют RString компонент в Списке с stringValue = "test"

Возможно ли что-то подобное?

patients = realm?.objects(Patient.self).filter("name = 'name1' AND @% IN list", RString(stringValue: 'test'))

1 Ответ

0 голосов
/ 26 апреля 2018

Вам нужно использовать SUBQUERY, чтобы получить доступ к свойствам элементов List в NSPredicate. SUBQUERY будет оценивать true для каждого Patient, чье свойство list включает хотя бы 1 RString элемент, stringValue которого соответствует указанному String.

patients = realm?.objects(Patient.self).filter("name = %@ AND SUBQUERY(list,$element,$element.stringValue == %@).@count>0", "name1", "test")
...