Я в похожей ситуации.
Я хочу использовать NSFetchedResultsController для управления B в отношениях один ко многим (A - >> B). Теперь, один из способов сделать это - создать предикат, подобный приведенному ниже, и применить его к сущности B:
NSPredicate *Predicate = [NSPredicate predicateWithFormat:
@"ANY hasParent.label == 'A'"];
Но это очень медленный способ ведения дел, и его следует избегать любой ценой.
Я попробовал это на 25 000 объектов, чтобы получить около 300, и симулятору потребовалось около 15 секунд. Он не завершит загрузку на iPhone и несколько раз падает.
Другим способом было бы сделать то, что уже упоминалось, создать NSArray из набора, удерживаемого A, и отсортировать его. Если вы отправляете все объекты в набор, вы возвращаете массив. A является NSManagedObject, выбранным ранее.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]
initWithKey:@"Name"
ascending:YES];
NSArray *lotsOfB = [[[A hasRelationsTo]
allObjects]
sortedArrayUsingDescriptors: sortDescriptors];
Это очень быстро. Нет задержки в симуляторе или на устройстве. Но вы не можете использовать NSFetchedResultsController печальные времена: - (
Надеюсь, это поможет.