Основные данные, сортировка дочерних объектов «один ко многим» - PullRequest
10 голосов
/ 26 марта 2010

Итак, допустим, у меня есть хранилище родителей детей, и родитель имеет отношение один-ко-многим с детьми (parent.children), и у них всех есть имена. Теперь при начальной выборке для родителей я могу указать дескриптор сортировки, чтобы вернуть их в порядке имен, но как я могу запросить детей по порядку? Если я сделаю [parent.children allObjects], он просто вернет их в беспорядке, и мне придется каждый раз сортировать по факту.

Спасибо, Sam

Ответы [ 2 ]

16 голосов
/ 27 марта 2010

Если вы просто хотите использовать NSArray, а не NSFetchedResultsController, есть другой способ:

NSSortDescriptor *alphaSort = [NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES];
NSArray *children = [[parent.children allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObject:alphaSort]];
11 голосов
/ 26 марта 2010

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]];

Очевидно, что имена ваших сущностей и атрибутов могут отличаться. В последней строке родительская переменная должна быть ссылкой на экземпляр NSManagedObject того родителя, чьи дочерние элементы вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...