Контроллер полученных результатов с NSPredicate против базовых данных NSSet - PullRequest
0 голосов
/ 04 августа 2010

Хорошо, у меня есть иерархия UITableView. Контроллер верхнего уровня предназначен для категорий, которые выбираются с помощью контроллера полученных результатов без предиката для объекта категории.

Когда пользователь касается ячейки, он переходит к контроллеру табличного представления элементов.

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

Однако мне было очень трудно построить предикат, который делает это. Кажется, что все примеры относятся к строкам поиска для сравнения атрибутов. Не сравнивает отношение CoreData.

Так что лучше использовать этот метод или просто получить NSSet элементов из переданного в категории управляемого объекта?

1 Ответ

2 голосов
/ 05 августа 2010

В вашем контроллере представления второго уровня должна быть выбрана выбранная категория посредством внедрения зависимости в качестве свойства. Ваш контроллер представления второго уровня должен знать только то, что «своей» категорией является X. Ему вообще не нужен NSFetchedResultsController, потому что у вас уже есть вся необходимая информация через отношения с сущностью «ее» категории.

Для этого в вашем контроллере представления верхнего уровня, когда выбрана категория, вы получаете указатель на него через NSFetchedResultsController, создаете экземпляр нового контроллера представления, устанавливаете свойство Category и затем выдвигаете новый контроллер представления.

Это даст вам надежную инкапсуляцию и разделение между вашими контроллерами представления.

...