2009-07-25 4 views
0

У меня есть управляемая объектная модель A и B с отношением «один ко многим».Правильный формат NSPredicate для отношений «один ко многим» в базовых данных

Для этой конкретной задачи я хочу получить все объекты A, которые имеют отношение к B, свойство соответствует «string».

Я попытался @"ALL bObjects.bProperty MATCHES 'string'", и это вызвало objc_exception_throw в:

[NSSQLGenerator generateSQLStatementForFetchRequest:ignoreInheritance:countOnly:] 

Что, кажется, проблема?

Кто-нибудь может посоветовать мне правильный формат предиката?

ответ

0

В соответствии с Predicate Programming Guide вы не можете использовать оператор MATCHES при извлечении из хранилищ данных Core Data SQL.

matches Оператор использует regex, поэтому не поддерживается SQL Core Data магазин-в, хотя он работает с фильтрацией в памяти.

Что касается остальных частей вашего предиката, она в настоящее время только вернуть A объектов, где весь набор bObjects имеет bProperty, который соответствует вашей входной строке.

Если вы хотите вернуть любые объекты A, у которых есть какой-либо объект в наборе bObjects, который соответствует вам, вы бы хотели использовать модификатор оператора ANY.

ANY bObjects.bProperty LIKE[cd] 'string' 
0

Спасибо за указание на то, что ограничения, да столько, сколько я хочу верить документации, я попытался МАТЧИ для SQLite выборки запроса, и это делает работу, хотя для безопасности я изменил его в LIKE.

Единственное, что не работает, это то, что я использую этот предикат для Core Data с использованием хранилища SQLite с запросом на выборку для связанного объекта (для многих в этом случае), не используя совпадения.

Прямо сейчас, я не использую запрос выборки на основе отношений, это слишком рискованно, и я до сих пор не знаю, в чем ошибка, я опубликовал это на devforums.apple.com, но никто до сих пор не отвечает на него.