Dies muss ein Duplikat sein. Aber bei so vielen NSPredicate-Fragen kann ich nicht die richtige finden.
Ich habe eine Liste von Core Data-Objekten, die ein compositeName
-Feld enthalten. Ein Name wie "Emily Blunt" könnte da drin sein. Ich möchte die Liste mit einem NSPredicate
durchsuchen, das mich nach "Em", aber auch nach "Bl" durchsuchen lässt und dann diesen Namen in den abgerufenen Ergebnissen anzeigt.
Das muss super einfach sein, aber wie du denkst, sehe ich es nicht. Mein dysfunktionaler Versuch eines NSPredicates mit einem regulären Ausdruck sieht so aus:
%Vor%Mein Gedanke für diesen regelmäßigen Ausdruck war:
Aber es funktioniert nicht. Ich bekomme keine Ergebnisse. Wie behebe ich das?
P.S. Wenn es eine NSPredicate-Lösung ohne reguläre Ausdrücke gibt, die auch meinem Zweck entspricht.
Sie müssen die gesamte Regex-Musterzeichenfolge außerhalb der Prädikatzeichenfolge erstellen und dann an das Prädikat übergeben.
Außerdem gibt es ein Regex-Konstrukt \b
, um mit einer Wortgrenze übereinzustimmen, was Sie anstreben.
Alles in allem sollte dies eine einfache Lösung für Ihr Problem sein:
%Vor%Wenn der eingegebene Suchtext nicht bereinigt wurde, sollten Sie dies tun, bevor Sie ihn an die Regex-Engine übergeben.
Eine weitere Verbesserung könnte darin bestehen, Unicode-Zeichen an der Wortgrenze zu akzeptieren, um es Leuten zu ermöglichen, nach 'Ántonio', 'Über' und anderen ähnlichen Strings zu suchen.
Die folgenden Codezeilen erzeugen ein Regex-Muster, das beide Aspekte berücksichtigt:
%Vor%Tags und Links nspredicate regex core-data foundation