2015-01-26 8 views
5

Ich möchte in der Lage sein, die Beziehung einer Entität mit einer IN-Klausel suchen. Ich habe folgendes Setup: enter image description hereCore Data NSPredate Fetch auf Entity-Beziehung mit In-Klausel

Ich mag würde eine Reihe von Spitznamen senden über und alle Personen mit diesen Spitznamen gefunden.

//array of names to find 
let nameArray: [String] = ["Tom", "Tommy", "Thomas"] 

// find all Persons who have a nickname associated with that person   
let predicate = NSPredicate(format: "ANY Person.nickName in %@",nameArray) 
var fetch = NSFetchRequest(entityName: "Person") 
fetch.predicate = predicate 
var fetchError : NSError? = nil 

// executes fetch 
let results = context?.executeFetchRequest(fetch, error: &fetchError) 

Aber wenn ich den Code ausführen, bekomme ich folgende Fehlermeldung:

'NSInvalidArgumentException', Grund: ‚unimplemented SQL-Generierung für Prädikat: (ANY Person.nickName IN { "Tom"," Tommy "," Thomas "}) '

Was mache ich hier falsch? Wenn ich die Prädikatsuche entferne, werden alle Ergebnisse in Ordnung zurückgegeben, aber sobald ich diese Zeile einfüge, bricht alles ab.

Antwort

8

Sie sollten den Beziehungsnamen in Ihrem NSPredicate verwenden.
Versuchen Sie dies:

let predicate = NSPredicate(format: "ANY personToNick.nickName in %@", nameArray) 
+0

danke! das hat mein Problem behoben – slidmac07

+0

Gern geschehen! CoreData kann knifflig sein, niemals aufgeben! :) – Para

+0

@Para können Sie mir die objektive C Alternative für diesen schnellen Code sagen? – SARATH