2010-08-04 4 views
0

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

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

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

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

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

ответ

2

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

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

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