2014-02-06 4 views
0

Есть ли способ получить основной объект данных и отфильтровать отношения? Например, если у меня есть объект Parent и объект Children. Children относятся к родителям. Я могу получить объект Parent и иметь только Children с волосами Blonde и Male.Отфильтровать отношения в Core Data

Я знаю, что могу просто получить все дети, а затем отфильтровать их после того, как у меня есть объект, но если я изменил дочерние элементы, назначенные родителям с отфильтрованными результатами, он испортил бы инверсию.

+1

* "... но если я изменил дочерние элементы, назначенные родителям с отфильтрованными результатами ..." * - зачем вы это делаете? - Вы можете либо фильтровать 'TheParent.children', либо выполнить запрос выборки в объекте Children с некоторым предикатом« parent = ... AND hairColor = ... ». Чего вы пытаетесь достичь? –

+0

@MartinR Когда я запускаю выборку, я получаю всех родителей с детьми. Однако мне просто нужен объект родителей с конкретными детьми. Из-за этого я обычно запускаю 'filterArrayWithPredicate' на дочерних элементах, чтобы получить те, которые мне нужны, и установите« theParents.children »в отфильтрованные результаты. Выполнение этого способа нарушает обратное. – Bot

+0

Установка «theParent.children» в отфильтрованные результаты, вероятно, плохая идея. Вы можете использовать настраиваемый метод (как в ответе ниже) или, возможно, определить «выбранное свойство» в инспекторе модели Core Data. У меня нет практического опыта с выбранными свойствами, но, согласно документации, их преимущество заключается в том, что результаты кэшируются. –

ответ

2

Вы можете легко фильтровать детей или простой запрос на получение выборки с помощью предиката, который выполнит правильный запрос для вас.

Если вы хотите, чтобы он «в» вашем объекте, вы можете добавить метод в Parent «s категории, которая будет фильтровать его для вас, а не баловаться отношений:

- (NSSet *)childrenMaleAndBlonde { 
    return [self.children filteredSetUsingPredicate:...]; 
} 

При фильтрации, что путь отношения не будут нарушены.

+0

Это было на самом деле прекрасно. Я сделал это немного по-другому, установив свойство внутри модели с помощью NSSet вместо того, чтобы иметь метод, который выполнял фильтрацию. – Bot

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