Использовать набор из управляемого объекта в качестве данных для контроллера выбранных результатов - PullRequest
1 голос
/ 18 апреля 2011

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

name (string)
orderId (int)
orderBy (string, a key path indicating what to order the table with)
dateCreated (date)
items (a relationship pointing to the items for the next table)

При нажатии на элемент с ненулевыми элементами, следующий контроллер получает ссылку на выбранный элемент и использует его "items", "orderBy" и "orderId" для создания выбранного контроллера результатов (с его элементами в качестве данных). ) и дескриптор сортировки (используя orderBy и OrderId).

Как я могу сказать выбранному контроллеру результатов использовать NSSet, возвращаемый элементами, в качестве своих данных? Могу ли я использовать предикат, чтобы ограничить результаты только элементами одного объекта? Спасибо

1 Ответ

1 голос
/ 18 апреля 2011

Ваши вещи должны иметь обратную связь «многие к одному». Давайте назовем эти отношения "родительскими".

В didSelectRowAtIndexPath: вашего делегата tableView инициируйте новый контроллер представления и передайте «родительский» объект в указанный indexPath. Вам нужно будет создать средство доступа для хранения указанного объекта в следующем контроллере представления.

Как вы правильно догадались, вы можете создать предикат, чтобы ваш fetchedResultsController возвращал только указанные «элементы». Сделайте так, чтобы ваши результаты поиска только для объекта "item".

NSPredicate *resultsPredicate = [NSPredicate predicateWithFormat:@"parent == %@", parentObject];
[fetchRequest setPredicate:resultsPredicate];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] 
    initWithKey:[parentObject valueForKey:@"orderBy"] ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];

По сути, вы ищете все "элементы", которые имеют родительское отношение к выбранному вами объекту.

Дайте мне знать, если я описал это правильно (извините, если я не сделал, но я делаю это сам, и могу указать на пример Apple).

РЕДАКТИРОВАТЬ: Apple, образец кода

http://developer.apple.com/library/ios/#samplecode/CoreDataBooks/Introduction/Intro.html#//apple_ref/doc/uid/DTS40008405

http://developer.apple.com/library/ios/#samplecode/iPhoneCoreDataRecipes/Introduction/Intro.html#//apple_ref/doc/uid/DTS40008913

...