2013-03-03 59 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

相關問題