2015-01-26 14 views
5

Mi piacerebbe essere in grado di cercare il rapporto di un'entità utilizzando una clausola IN. Ho la seguente configurazione: enter image description hereCore Data NSPredicate recuperare il rapporto con un'entità nella clausola

Vorrei inviare più di una serie di soprannomi e trovare tutte le persone associate a tali soprannomi.

//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) 

Ma quando si esegue il codice, ottengo il seguente errore:

'NSInvalidArgumentException', la ragione: 'la generazione SQL non implementato per il predicato: (QUALSIASI Person.nickName IN { "Tom", " Tommy", "Thomas"})'

che cosa sto facendo male qui? Se rimuovo la ricerca dei predicati, restituisce tutti i risultati ok, ma non appena aggiungo questa riga, tutto si interrompe.

risposta

8

Si consiglia di utilizzare il nome della relazione nella vostra NSPredicate.
Prova questo:

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

grazie! che ha risolto il mio problema – slidmac07

+0

Prego! CoreData può essere difficile, non mollare mai! :) – Para

+0

@Para puoi dirmi l'alternativa C oggettiva per questo codice? – SARATH