NSDictionary命令不匹配allKeys命令

我已经按照第一个字母组织的名字创build了sorting数组的NSDictionary(见下面的结果)。 当我使用命令allKeys为同一个字典,顺序是不一样的。 我需要相同的顺序,因为这个NSDictionary在UITableview中使用,应该是按字母顺序的。

- (NSDictionary*) dictionaryNames { NSDictionary *dictionary; NSMutableArray *objects = [[NSMutableArray alloc] init]; NSArray *letters = self.exhibitorFirstLetter; NSArray *names = self.exhibitorName; for (NSInteger i = 0; i < [self.exhibitorFirstLetter count]; i++) { [objects addObject:[[NSMutableArray alloc] init]]; } dictionary = [[NSDictionary alloc] initWithObjects: objects forKeys:letters]; for (NSString *name in names) { NSString *firstLetter = [name substringToIndex:1]; for (NSString *letter in letters) { //z, b if ([firstLetter isEqualToString:letter]) { NSMutableArray *currentObjects = [dictionary objectForKey:letter]; [currentObjects addObject:name]; } } } NSLog(@"%@", dictionary); NSLog(@"%@", [dictionary allKeys]); return dictionary; 

}

  B = ( "Baker's Drilling", "Brown Drilling" ); C = ( "Casper Drilling" ); J = ( "J's, LLC" ); N = ( "Nelson Cleaning", "North's Drilling" ); T = ( "Tim's Trucks" ); Z = ( "Zach's Main", "Zeb's Service", "Zen's" ); 

}

 J, T, B, N, Z, C 

NSDictionary不是一个有序的集合。 没有办法控制它如何订购的东西,它可能会完全取决于操作系统版本,设备types和字典内容。

我只是把NSDictionary放入有序数组中:

 - (NSArray*)sortAllKeys:(NSArray*)passedArray{ NSArray* performSortOnKeys = [passedArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; return performSortOnKeys; }