2017-06-19 1 views
1

Ich habe diese NSPredicate:Filter Reich Ergebnisse mit ANY und UND

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

Der obige Code gibt alle Objekte, die ein Kind von Eigentum ‚PROP1‘ oder ein Kind der Schlüssel ‚key1‘ haben

Was ich brauche nur die Objekte zurück, die ein Kind mit beide Eigenschaft ‚PROP1‘ hat und Schlüssel ‚key1‘

Detaillierte Erläuterung

Ich habe Objekte von Person s

Jeder Person hat eine childs Eigenschaft, die eine Liste von Kid

ist Jeder Kid hat zwei String-Eigenschaften prop und key

  • Person[0] hat zwei Kinder in der Childs Liste

    • Kid[0].prop = prop1 und Kid[0].key = key1

    • Kid[1].prop = prop2 und Kid[0].key = key2

  • Person[1] haben zwei Kinder in der Childs Liste

    • Kid[0].prop = prop1 und Kid[1].key = key2
    • Kid[1].prop = prop2 und Kid[1].key = key1

Das Prädikat oben kehrt beiden Personen, während das, was ich für sie brauche nur die erste Person zurückkehren, weil nur die erste Person, die ein Kind mit prop1 und key1

Hilfe hat, wird sehr geschätzt

Antwort

2

um das sicherzustellen, dass beide Kriterien von demselben Objekt erfüllt sind, müssen Sie eine Unterabfrage verwenden:

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