2015-01-26 2 views
5

Я хотел бы иметь возможность искать отношения объекта с использованием предложения IN. У меня есть следующие настройки: enter image description hereИсходные данные NSPredicate для определения отношения сущностей, используемые в разделе

Я хотел бы отправить через массив прозвища и найти все лица, связанные с этими прозвищами.

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

Но когда я запускаю код, я получаю следующее сообщение об ошибке:

'NSInvalidArgumentException', причина: «нереализованное поколение SQL для предиката: (ANY Person.nickName IN { "Том"," Tommy "," Thomas "}) '

Что я здесь делаю неправильно? Если я удалю поиск предикатов, он вернет все результаты в порядке, но как только я добавлю эту строку, все сломается.

ответ

8

Вы должны использовать имя отношения в своем NSPredicate.
Попробуйте следующее:

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

спасибо! что исправила мою проблему – slidmac07

+0

Добро пожаловать! CoreData может быть сложным, никогда не сдаваться! :) – Para

+0

@Para вы можете сказать мне объективную альтернативу C для этого быстрого кода? – SARATH

Смежные вопросы