0

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

谢谢

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

2 回答 2

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];
}];
于 2013-03-03T13:54:57.983 回答
0

NSString有一个方法叫intValue- 这就是你要找的。

当然,更好的解决方案是使用 s 数组NSNumber而不是NSStrings 数组。

您不必更改每个数组值的类型来对 Couples 数组进行排序 - 看看这个:

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;
                    }];
于 2013-03-03T13:30:04.890 回答