Супер просто! Вот формат для обычного фильтра
Если у вас есть DogClass
class DogClass: Object {
@objc dynamic var name = ""
}
, а затем вам нужен список собак, которые не названы Dino и Fido, вот код
let dogNames = ["Fido", "Dino"]
let results = realm.objects(DogClass.self).filter("NOT dog_name IN %@", dogNames)
Результат подзапроса будет зависеть от того, какой результат вы ожидаете и для чего предназначен подзапрос.
Например, скажем, у нас есть PersonClass, у которого есть свойство dog, которое являетсяСписок собак, которых они знают. Если мы хотим, чтобы все люди, которые не знают Фидо или Дино, это запрос
let personResults = realm.objects(PersonClass.self).filter("NOT ANY dogs.dog_name in %@", dogNames)
РЕДАКТИРОВАТЬ
На основе обновленного вопроса, давайте попробуем это. Так как я использовал PersonClass в вышеупомянутом, я задам этот вопрос.
Я хочу получить список всех людей (Убежищ), которые не имеют породы (расы) Гончей. Вот класс Breed для отслеживания пород
class BreedClass: Object {
@objc dynamic var breed = ""
}
и DogClass, который обладает свойством породы (например, "Раса" в вопросе)
class DogClass: Object {
@objc dynamic var dog_id = NSUUID().uuidString
@objc dynamic var dog_name = ""
@objc dynamic var dog_breed: BreedClass?
override static func primaryKey() -> String? {
return "dog_id"
}
}
и, наконец,Класс Person, у которого есть список объектов DogClass
class PersonClass: Object {
@objc dynamic var person_id = UUID().uuidString
@objc dynamic var first_name = ""
let dogs = List<DogClass>()
override static func primaryKey() -> String? {
return "person_id"
}
}
Затем у нас есть несколько населенных объектов породы
let b0 = BreedClass()
b0.breed = "Mut"
let b1 = BreedClass()
b1.breed = "Poodle"
let b2 = BreedClass()
b2.breed = "Hound"
, а затем мы добавляем породы в собак и добавляем собак в этих людей. В этом случае у нас будет только одна собака b2, гончая
let d2 = DogClass()
d2.dog_name = "Sasha"
d2.dog_breed = b2
. В этом случае я добавила 4 человек, Берт, Эрни, Гровер и Граф. Эрни был единственным человеком, к которому я добавил собаку.
Наконец запрос, который вернет всех людей, которые НЕ имеют породы собак.
let breed = "Hound"
let personResults = realm.objects(PersonClass.self).filter("NOT ANY dogs.dog_breed.breed == %@", breed)
for person in personResults {
print(person.first_name)
}
и вывод
Bert
Grover
The Count
И Эрни пропал, потому что у него есть гончая.