Kerndaten zu-viele NSPredicate mit UND
-
23-09-2019 - |
Frage
Ich versuche, eine Abfrage für die Find-as-you-type-Suchleiste zu schreiben. Was ich tun möchte, ist Abfrage „Kind“ und kehren alle Arten, für die ein Local ist mit ( ‚name‘ LIKE% @ UND LocaleIdentifier ==% @).
Wenn ich nur die Namen der Suche (so die LocaleIdentifier ignorieren), ich so etwas tun könnte:
ANY localized.name LIKE %@
Was ich will, ist etwas mehr wie
ANY localized.(name LIKE %@ AND localeIdentifier == %@)
Um es zusammenzufassen, „Kind“, einem Artikel in der n-Beziehung „lokalisiert“ gesucht sollten beide Namen übereinstimmen und LocaleIdentifier.
Alle Ideen für die korrekte Syntax das?
Lösung
Was Sie wollen, ist ein Unterabfrage . In Prädikat Format Syntax:
SUBQUERY(self.localized, $x, $x.name LIKE %@ AND $x.localeIdentifier == %@).@count > 0
, wo der SUBQUERY
Ausdruck eine Sammlung von Instanzen in der self.localized
Sammlung zurückgibt, die das Prädikat im dritten Argument übereinstimmen. Kind
Instanzen für die diese Unterabfrage Ausdruck nicht leer ist (dh @count > 0
) den gewünschten Kriterien entsprechen.
Die Unterabfrage-Expression wurde in OS X 10.5 eingeführt.