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