代码之家  ›  专栏  ›  技术社区  ›  Jordan

通过自定义对象中包含的字典对自定义对象数组进行排序:如何?

  •  0
  • Jordan  · 技术社区  · 15 年前

    我有一个自定义对象数组。这些对象包括一本词典。 大概是这样的:

    CustomDataModel *dataModel;
    
    dataModel.NSString
    dataModel.NSDictionary
    dataModel.image
    

    我想按字典中的一个对象排序:

    dataModel.NSDictionary ObjectWithkey=@"Name"
    

    数据模型被加载到NSArray中。现在我想按字典中的@“Name”键排序。这是NSSortDescriptor可以处理的吗?基本排序很好,只是还没弄明白这个。。。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Matt Long    15 年前

    - (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];
    }
    
        2
  •  0
  •   Mr H    14 年前
    //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]];