我有一个包含以下内容的dico NSDictionary: { 123 =, 125 =, ... 73 = }
123,125,..,73是NSString。
我想要一个NSArray,其中包含按其ID排序的对象:
[ <MyObject:73>, <MyObject:123>, ..., <MyObject:125> ]
最有效的方法是什么?
我使用[[dico allKeys] sortedArrayUsingSelector:@selector(compare:)]
来键入有序键的列表,但由于键是NSString,因此它们没有以正确的方式排序(我最终可以使用[42,46,5,56 ...]。
答案 0 :(得分:1)
在对表示数字的NSStrings进行排序时,您希望使用NSNumericSearch选项对它们进行排序,例如数字,例如1&lt; 20&lt; 100&lt; 1000.这是一个例子:
NSMutableDictionary* d = [NSMutableDictionary dictionaryWithCapacity:3];
[d setObject:@"C" forKey:@"3"];
[d setObject:@"A" forKey:@"1"];
[d setObject:@"B" forKey:@"2"];
NSArray* sortedKeys = [d keysSortedByValueUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2 options:NSNumericSearch];
}];
NSLog(@"%@",sortedKeys);
NSArray* sortedObjs = [d objectsForKeys:sortedKeys notFoundMarker:[NSNull null]];
NSLog(@"%@", sortedObjs);
答案 1 :(得分:0)
您可以使用NSDictionary的keysSortedWithCompartor方法,在那里您可以提供比较器来按照您希望的方式比较键(在您的情况下,通过将它们作为整数进行比较)。