Так, позволяет, говорят, что у меня есть хранилище родительских детей, и родитель имеет связь "один ко многим" к детям (parent.children), и у них всех есть имена. Теперь, на начальной выборке для родителей я могу указать дескриптор вида для возвращения их в порядке имени, но как я могу запросить детей в порядке? Если бы я делаю [parent.children allObjects], он просто отдает их в беспорядке, и я должен был бы отсортировать после факта, каждый раз.
Спасибо, Sam
Sam,
Если я правильно понял ваш вопрос, вы хотите настроить выборку, которая возвращает отсортированный список детей определенного родителя. Для этого я бы настроил выборку для сущностей "дети", а затем использовал предикат для ограничения результатов:
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:[NSEntityDescription entityForName:@"children" inManagedObjectContext:moc]];
[request setSortDescriptors:[NSArray initWithObject:[[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES]];
[request setPredicate:[NSPredicate predicateWithFormat:@"(parent == %@)", parent]];
Очевидно, что имена ваших сущностей и атрибутов могут быть другими. В последней строке переменная parent должна быть ссылкой на экземпляр NSManagedObject родителя, чьи дети вам нужны.
Если вы просто хотите использовать NSArray, а не NSFetchedResultsController, есть другой способ:
NSSortDescriptor *alphaSort = [NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES];
NSArray *children = [[parent.children allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObject:alphaSort]];