iOS比较NSArray中NSString的intValue

时间:2012-01-09 15:17:47

标签: ios nsarray

我有一个包含以下内容的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 ...]。

2 个答案:

答案 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方法,在那里您可以提供比较器来按照您希望的方式比较键(在您的情况下,通过将它们作为整数进行比较)。