如何在objC中将字符串数组更改为整数数组?

时间:2013-03-03 13:16:57

标签: objective-c sorting casting nsarray

我从另一个动态数组couples中检索了一个NSString-Objects(valuesFirstdance)数组。我知道字符串总是包含整数。我需要值为integer类型来排序couples数组。我如何更改每个数组值的类型?

由于

couples = [valuesFirstdance allKeys];
NSArray* couples2 = [couples sortedArrayUsingSelector:@selector(intValue)];

2 个答案:

答案 0 :(得分:1)

直接回答这个问题:

NSMutableArray *integerArray = [[NSMutableArray alloc] initWithCapacity:couples.count];
for (NSString *s in couples) {
   [integerArray addObject:[NSNumber numberWithInteger:s.integerValue]];
}

但您也可以对字符串值进行数字排序,例如使用NSNumericSearch

NSArray *sortedArray = [couples sortedArrayUsingComparator:^(NSString *o1, NSString *o2) {
    return [o1 compare:o2 options:NSNumericSearch];
}];

答案 1 :(得分:0)

NSString有一个名为intValue的方法 - 这就是您正在寻找的方法。

当然,更好的解决方案是拥有NSNumber s而不是NSString的数组。

您不必更改每个数组值的类型以对couple数组进行排序 - 请看:

NSArray *sortedArray = [couplesArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

NSString *firstString = (NSString*) obj1;
NSString *secondString = (NSString*) obj2;

if([firsString integerValue]<[secondString integerValue]) 
return (NSComparisonResult) NSOrderedDescending;
else if([firsString integerValue]>[secondString integerValue])
return (NSComparisonResult) NSOrderedAscending;

return (NSComparisonResult) NSOrderedSame;
                    }];