Ich habe eine Reihe von Benutzern in CoreData und ein Suchfeld in meiner Anwendung. Der Benutzer hat die Eigenschaften Vorname und Name.
Zur Zeit habe ich ein Prädikat wie "user.name CONTAINS [c]% @ OR benutzer.vorname CONTAINS [c]% @"
Dies funktioniert, bis der Benutzer einen vollständigen Namen wie "John Smith" eingibt. Selbst wenn er "john sm" eintippt, sollte das John Smith-Objekt gefunden werden.
Was ist das Prädikat, um ein Array (IN) von Suchbegriffen mit CONTAINS zu kombinieren?
2.5 Jahre später kann ich meine Frage mit einem etwas komplexeren Beispiel in swift beantworten:
%Vor%Ich glaube nicht, dass Sie "IN" mit "CONTAINS" in einem Prädikat kombinieren können. Aber Sie könnten den Suchstring in Wörter aufteilen und ein "zusammengesetztes Prädikat" erstellen:
%Vor%Dieses Beispiel erzeugt das Prädikat
%Vor%was "John Smith", aber nicht "John Miller" entspricht.
Ich hatte das gleiche Problem und löste es so:
In meiner NSManagedObject-Klasse (user) habe ich die folgende Methode hinzugefügt, indem ich die beiden Werte zu einer einzigen Zeichenfolge zusammenfasse:
%Vor%Dann brauchen Sie nur die folgenden Zeilen, um mit Ihrer Liste übereinzustimmen, was in meinem Fall ein NSArray mit Benutzerobjekten ist:
%Vor%Swift 4 Update:
%Vor%Verwenden Sie das orCompoundPredicate beim Abrufen von Daten.
Tags und Links nspredicate core-data