2013-03-03 55 views
0

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

感谢

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

'valuesFirstdance' can not be 数组; 'allKeys'是一个'NSDictionary'方法。 – 2013-03-03 18:50:22

回答

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]; 
}]; 
+0

谢谢! NSNumericSearch不在我的屏幕上.. – Nareille 2013-03-03 14:12:00

0

NSString有一个名为intValue方法 - 这是你在找什么。

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

你不必改变所有的数组值夫妻数组进行排序的类型 - 看看这个:

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; 
        }]; 
+0

感谢您的回复。我知道intValue并用排序方法尝试过,但我无法弄清楚如何在那里使用它(如果可能的话)。因为我不知道我的'夫妇'阵列包含多少条目(从3到7),我不知道你的方法是我在找什么。 – Nareille 2013-03-03 13:50:15

+0

你是否尝试过我提供的排序代码我的答案? – 2013-03-03 13:54:52

相关问题