Это не тот ответ, который вы просите, но, возможно, он решит вашу проблему. Зачем вам эти имена?
Не могли бы вы использовать предикат для циклического перебора вложенных списков? Я не знаю, будет ли производительность лучше, но, поскольку вы используете CoreData, я бы попробовал.
Я использовал предикат, который перебирает вложенные списки, подобные этому. Я сделал это с помощью редактора предикатов Xcode3. Но у Xcode4 есть и редактор.
NSPredicate *predicate =[NSPredicate predicateWithFormat:@"ANY keywords.word contains[cd] %@", self.searchBar.text];
[fetchedResultsControllerSearch.fetchRequest setPredicate:predicate];
NSError *error = nil;
if (![[self fetchedResultsControllerSearch] performFetch:&error]) {
// Handle error
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}