2015-01-26 26 views
5

Chciałbym móc przeszukać relację podmiotu za pomocą klauzuli IN. Mam następujące ustawienia: enter image description hereCore Data NSPredicate pobierz na relacji encji za pomocą w klauzuli

Chciałbym przesłać tablicę pseudonimów i znaleźć wszystkie osoby powiązane z tymi pseudonimami.

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

Ale kiedy uruchomić kod, pojawia się następujący błąd:

'NSInvalidArgumentException', powód: „niezaimplementowane generacji SQL dla orzecznika: (dowolny Person.nickName IN { "Tom"," Tommy "," Thomas "})"

Co ja tu robię źle? Jeśli usuniemy wyszukiwanie predykatów, zwrócone zostaną wszystkie wyniki, ale gdy tylko dodaję ten wiersz, wszystko się zepsuje.

Odpowiedz

8

Powinieneś używać nazwy związku w swoim NSPredicate.
Spróbuj tego:

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

dziękuję! to naprawiło mój problem – slidmac07

+0

Nie ma za co! CoreData może być trudna, nigdy się nie poddawaj! :) – Para

+0

@Para, czy możesz mi podać alternatywę celu C dla tego szybkiego kodu? – SARATH