Подтвердить что ты не робот

Сортировка NSS-пакетов основного объекта данных - Objective-c

Я хотел бы сортировать данные основных данных NSSet (я знаю, что мы можем делать это только с массивами, но позвольте мне объяснить...). У меня есть пользователь-сущность, у которого есть отношение ко многим с рецептом сущности. Рецепт имеет имя и идентификатор атрибутов. Я хотел бы получить такие данные, что:

NSArray *id = [[user.recipes valueForKey:@"identity"] allObjects];
NSArray *name = [[user.recipes valueForKey:@"name"] allObjects];

если я беру объект в индекс 1 в обоих массивах, они соответствуют одному и тому же рецепту...

Спасибо

4b9b3361

Ответ 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];
....