2009-12-05 4 views
0

У меня есть массив пользовательских объектов. Объекты включают словарь. Что-то вроде этого:Сортировка массива пользовательских объектов с помощью словаря, включенного в пользовательский объект: Как?

CustomDataModel *dataModel; 

dataModel.NSString 
dataModel.NSDictionary 
dataModel.image 

Я хотел бы отсортировать по одному из объектов в словаре:

dataModel.NSDictionary [email protected]"Name" 

DataModel загружается в NSArray. Теперь я хочу отсортировать по клавише @ "Name" в словаре. Может ли это обрабатывать NSSortDescriptor? Основные вроде работает нормально, просто не понял, это один из еще ...

ответ

1

Ваш вопрос не совсем ясно для меня, но вы можете попробовать что-то вроде этого на вашем 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]; 
} 
+0

Этого решения, которое я придумал, как Ну, однако, я не был уверен, что это сработает сначала из-за NSDictionary. В любом случае, работает как шарм! Спасибо за помощь и подтверждение, Мэтт. – Jordan

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

выше метод хорош для массива, который содержит словари

 Смежные вопросы

  • Нет связанных вопросов^_^