Ios NSDictionary顺序与allKeys顺序不匹配
我已经创建了按名称按第一个字母组织的排序数组字典(见下面的结果)。当我对同一个字典使用allKeys命令时,顺序不同。我需要相同的顺序,因为此NSDictionary在UITableview中使用,并且应该按字母顺序排列Ios NSDictionary顺序与allKeys顺序不匹配,ios,objective-c,uitableview,nsdictionary,Ios,Objective C,Uitableview,Nsdictionary,我已经创建了按名称按第一个字母组织的排序数组字典(见下面的结果)。当我对同一个字典使用allKeys命令时,顺序不同。我需要相同的顺序,因为此NSDictionary在UITableview中使用,并且应该按字母顺序排列 - (NSDictionary*) dictionaryNames { NSDictionary *dictionary; NSMutableArray *objects = [[NSMutableArray alloc] init]; NSArray *letters
- (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;
}
)NSDictionary不是有序集合。无法控制它如何排序,它可能会根据操作系统版本、设备类型和字典内容完全改变。我只是将NSDictionary放入排序数组中:
- (NSArray*)sortAllKeys:(NSArray*)passedArray{
NSArray* performSortOnKeys = [passedArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
return performSortOnKeys;
}
这是因为NSDictionary键没有排序。如果您想订购,请将其放入数组中。可能的重复项,谢谢您的建议,现在已解决!
J,
T,
B,
N,
Z,
C
- (NSArray*)sortAllKeys:(NSArray*)passedArray{
NSArray* performSortOnKeys = [passedArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
return performSortOnKeys;
}