Сортировка массива пользовательских объектов по словарю, включенному в пользовательский объект:Каким образом?
-
13-09-2019 - |
Вопрос
У меня есть массив пользовательских объектов.Объекты включают в себя словарь.Что- то вроде этого:
CustomDataModel *dataModel;
dataModel.NSString
dataModel.NSDictionary
dataModel.image
Я бы хотел выполнить сортировку по одному из объектов в словаре:
dataModel.NSDictionary ObjectWithkey=@"Name"
Модель данных загружается в NSArray.Теперь я хочу отсортировать по клавише @"Name" в словаре.Это то, с чем может справиться NSSortDescriptor?Базовая сортировка работает нормально, просто с этой я еще не разобрался...
Решение
Ваш вопрос мне не совсем понятен, но вы можете попробовать что-то подобное в вашем NSArray:
- (NSArray *)sortedItems:(NSArray*)items;
{
NSSortDescriptor *sortNameDescriptor =
[[[NSSortDescriptor alloc]
initWithKey:@"Name" ascending:NO]
autorelease];
NSArray *sortDescriptors =
[[[NSArray alloc]
initWithObjects:sortNameDescriptor, nil]
autorelease];
return [items sortedArrayUsingDescriptors:sortDescriptors];
}
Другие советы
//Sort an array which holds different dictionries - STRING BASED - Declare it in the .h
- (NSArray *)sortStringsBasedOnTheGivenField:(id)dictionaryKey arrayToSort:(NSMutableArray *)arrayToHoldTemp ascending:(BOOL)ascending {
NSSortDescriptor *nameDescriptor = [[NSSortDescriptor alloc] initWithKey:dictionaryKey ascending:ascending selector:@selector(localizedCaseInsensitiveCompare:)] ;
NSArray *descriptors = [NSArray arrayWithObject:nameDescriptor];
[arrayToHoldTemp sortUsingDescriptors:descriptors];
[nameDescriptor release];
return arrayToHoldTemp;
}
Использование:
self.mainArrayForData = [NSArray arrayWithArray:[self sortNumbersBasedOnTheGivenField:@"Name" arrayToSort:arrayWhichContainsYourDictionries ascending:YES]];
описанный выше метод хорош для массива, содержащего словари
Не связан с StackOverflow