NSPredicate: Kombiniere CONTAINS mit IN

8

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?

    
netshark1000 20.11.2012, 18:16
quelle

4 Antworten

13

2.5 Jahre später kann ich meine Frage mit einem etwas komplexeren Beispiel in swift beantworten:

%Vor%     
netshark1000 25.05.2015, 17:55
quelle
35

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.

    
Martin R 20.11.2012 20:21
quelle
0

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%     
Tonnie 28.11.2012 19:32
quelle
0

Swift 4 Update:

%Vor%

Verwenden Sie das orCompoundPredicate beim Abrufen von Daten.

    
Sanket Ray 24.02.2018 13:20
quelle

Tags und Links