コレクションの各要素がAND条件に合致するように検索したい
class Dog: Object {
dynamic var name = ""
dynamic var age = 0
let owners = LinkingObjects(fromType: Person.self, property: "dogs")
}
class Person: Object {
dynamic var name = ""
let dogs = List<Dog>()
}
追加したデータ
realm.add(Person(value: ["AAA", [["taro", 1], ["pochi", 6]]]))
realm.add(Person(value: ["BBB", [["kuro", 1], ["hachi", 6]]]))
realm.add(Person(value: ["CCC", [["taro", 6], ["pochi", 6]]]))
realm.add(Person(value: ["DDD", [["kuro", 6], ["chibi", 6]]]))
上記のモデルとデータで。
いくつかの特定の名前と一致し、かつ、年齢の条件と一致するdogを持つpersonを検索しようとしました。たとえば、「kuroかpochi かつ 3才以下のdogを持つperson」を検索する条件としてINを用いて次のような条件を書きました。
let persons = realm.objects(Person.self).filter(
NSPredicate(format: "ANY dogs.name IN %@ && ANY dogs.age <= %d",
["kuro", "pochi"], 3 ))
結果に'BBB'のみを期待しているのですが、'AAA'も検索されてしまいます。INをどのように解釈すればいいのでしょうか?
「kuroかpochi かつ 3才以下のdogを持つperson」を検索する場合はどのような条件を記述すればいいのでしょうか?
よろしくお願いいたします。