Сортировка NSS-пакетов основного объекта данных - Objective-c
Я хотел бы сортировать данные основных данных NSSet (я знаю, что мы можем делать это только с массивами, но позвольте мне объяснить...). У меня есть пользователь-сущность, у которого есть отношение ко многим с рецептом сущности. Рецепт имеет имя и идентификатор атрибутов.
Я хотел бы получить такие данные, что:
NSArray *id = [[user.recipes valueForKey:@"identity"] allObjects];
NSArray *name = [[user.recipes valueForKey:@"name"] allObjects];
если я беру объект в индекс 1 в обоих массивах, они соответствуют одному и тому же рецепту...
Спасибо
Ответы
Ответ 1
Вам нужно сначала отсортировать рецепты:
NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
NSArray *sortedRecipes = [[recipes allObjects] sortedArrayUsingDescriptors:sortDescriptors];
вы можете извлечь массив атрибутов из массива отсортированных рецептов, и результаты останутся в отсортированном порядке:
NSArray *sortedNames = [sortedRecipes valueForKey:@"name"];
NSArray *sortedIdentities = [sortedRecipes valueForKey:@"identity"];
Ответ 2
Если вы хотите, чтобы они были в одном порядке, вам необходимо отсортировать их перед извлечением значений. Пример:
NSArray * sortedRecipes = [user.recipes sortedArrayUsingDescriptors:arrayOfSortDescriptors];
NSArray * identities = [sortedRecipes valueForKey:@"identity"];
NSArray * names = [sortedRecipes valueForKey:@"name"];
ИЗМЕНИТЬ
Мои извинения. Я просто понял, что это вопрос iPhone, а NSSet
не имеет sortedArrayUsingDescriptors:
на iPhone. Тем не менее, тривиально работать:
NSArray * recipes = [user.recipes allObjects];
NSArray * sortedRecipes = [recipes sortedArrayUsingDescriptors:arrayOfSortDescriptors];
....