Я пытаюсь использовать NSPredicate для поиска совпадений строк в массиве объектов CoreData, сгенерированных так:
// Grab an array of all Company projects
NSArray *array = [[company projects] allObjects];
Я использую следующий предикат для сопоставления любых имен проектов, компаний или клиентовимена с нечувствительной к регистру строкой (примечание: это должно допускать частичное совпадение, чтобы «приложение» соответствовало «Apple Inc.» и т. д.):
(name LIKE[cd] %@) OR (ANY companies.name LIKE[cd] %@) OR (ANY companies.clients.name LIKE[cd] %@)
Отношения CoreData, упомянутые в представлении предикатавот так:
SELF -> (NSString *) name
SELF -> (NSSet *) companies -> (NSString *) name
SELF -> (NSSet *) companies -> (NSSet *) -> clients -> (NSString *) name
Всякий раз, когда я пытаюсь отфильтровать по вышеуказанному предикату, я нахожу в своей консоли следующее:
HIToolbox: ignoring exception 'Can't do regex matching on object {(
"Apple Inc.",
"Test Co.",
Microsoft
)}.'
Если я правильно понимаю вещи, это выглядит какхотя при попытке сопоставления с траекторией ключей "companies.clients.name" возвращает NSSet (или другой объект), где ожидалось NSString (имя).
Что я делаю неправильно?