使用ANY和AND

时间:2017-06-19 00:18:27

标签: swift realm nspredicate

我有这个NSPredicate:

results?.filter("ANY childs.property = 'prop1' AND ANY childs.key contains[c] %@", "key1")

上面的代码返回所有具有子属性的对象' prop1'或者是密钥' key1'

的孩子

我需要的是只返回具有子属性的对象同时拥有属性' prop1' AND key' key1'

详细说明

我有Person s

的对象

每个Person都有一个childs属性,该列表是Kid

每个Kid都有两个字符串属性propkey

  • Person[0]在孩子列表中有两个孩子

    • Kid[0].prop = prop1Kid[0].key = key1

    • Kid[1].prop = prop2Kid[0].key = key2

  • Person[1]在孩子列表中有两个孩子

    • Kid[0].prop = prop1Kid[1].key = key2
    • Kid[1].prop = prop2Kid[1].key = key1

上面的谓词会返回两个人,而我需要的只是返回第一个人,因为只有第一个人有一个prop1key1的孩子

非常感谢帮助

1 个答案:

答案 0 :(得分:2)

要确保同一对象满足这两个条件,您需要使用子查询:

results?.filter("SUBQUERY(childs, $child, $child.property = 'prop1' AND $child.key contains[c] %@).@count > 0", "key1")