我创建了一个NSDictionary,在其中放置了一些对象和键。但是问题是,按照我的理解,键是按键的首字母排序的。例如,我输入“G”,“B”,“C”。因此,它将它们排序并显示为“B”,“C”,“G”。我想禁用排序,我该怎么做。我正在处理更复杂的示例,但我想使问题简化。
问题:如何在NSDictionary中禁用排序,或者如何自己对NSDictionary排序?
提前致谢!
最佳答案
如@Dan F所述,NSDictionary不会对其条目进行排序。如@Hot Licks的评论所述,NSDictionary将其内容按任意顺序放置。您永远不应假设字典中的条目顺序有关。 NSArray更适合这种情况。
如果您确实想以某种预定义的排序顺序显示字典的内容,则可以使用与它们关联的值来获取键排序的数组。 NSDictionary类具有支持此功能的keysSortedByValueUsingSelector:
和keysSortedByValueUsingComparator:
方法。因此,如果您想通过将值按升序排序来控制显示顺序,则可以执行以下操作:
NSArray *orderedKeys = [myDictionary keysSortedByUsingSelector:@selector(caseInsensitiveCompare:)];
for (int i = 0; i < [sortedKeys count]; i++) {
NSString *key = [sortedKeys objectAtIndex:i];
NSLog(@"%@ = %@", key, [myDictionary objectForKey:key]);
}
结果应显示字典中的每个条目,并按每个条目中的值排序。
关于objective-c - 禁用NSDictionary排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11420362/