排序' Person.firstName'的有效方式首先按字母顺序排列

时间:2014-05-16 19:10:23

标签: ios sorting nsdictionary

我遍历了一长串的名字,我将每个名字都分配给了一个' Person'宾语。 Person对象有firstNamelastName。我正在寻找一种有效的方法来排序从firstNamesA开头的所有Z。我已经提出了这个解决方案,但它并不高效,或者肯定比创建#39;更容易。每个字母表的数组。

 for(int i = 0; i < numberOfPeople; i++) {

    ...

    if ([person.firstName hasPrefix:@"A"] || [person.firstName hasPrefix:@"a"]) {
            [self.letterA_Array addObject:person];//NSMutableArray

        }

    ...
  }

如果它可以与对象一起使用,我想要类似下面的例子,但我不确定:

NSDictionary *animals = @{@"B" : @[@"Bear", @"Black Swan", @"Buffalo"],
            @"C" : @[@"Camel", @"Cockatoo"],
            @"D" : @[@"Dog", @"Donkey"],
            @"E" : @[@"Emu"],
            @"G" : @[@"Giraffe", @"Greater Rhea"],
            @"H" : @[@"Hippopotamus", @"Horse"],
            @"K" : @[@"Koala"],
            @"L" : @[@"Lion", @"Llama"],
            @"M" : @[@"Manatus", @"Meerkat"],
            @"P" : @[@"Panda", @"Peacock", @"Pig", @"Platypus", @"Polar Bear"],
            @"R" : @[@"Rhinoceros"],
            @"S" : @[@"Seagull"],
            @"T" : @[@"Tasmania Devil"],
            @"W" : @[@"Whale", @"Whale Shark", @"Wombat"]};

1 个答案:

答案 0 :(得分:1)

你可以这样做:

NSArray *names = @[@"Bob", @"Book2", @"August", @"Zulu", @"Agnoz"];
NSMutableDictionary *buckets = [[NSMutableDictionary alloc] init];
for (NSString *name in names) {
    NSString *index = [name substringToIndex:1];
    if (!buckets[index]) {
        buckets[index] = [[NSMutableArray alloc] init];
    }
    [buckets[index] addObject:name];
}