couples
我从另一个动态数组中检索了一个 NSString-Objects( ) 数组valuesFirstdance
。我知道字符串总是包含整数。我需要值是整数类型来对couples
数组进行排序。我将如何更改为每个数组值的类型?
谢谢
couples = [valuesFirstdance allKeys];
NSArray* couples2 = [couples sortedArrayUsingSelector:@selector(intValue)];
couples
我从另一个动态数组中检索了一个 NSString-Objects( ) 数组valuesFirstdance
。我知道字符串总是包含整数。我需要值是整数类型来对couples
数组进行排序。我将如何更改为每个数组值的类型?
谢谢
couples = [valuesFirstdance allKeys];
NSArray* couples2 = [couples sortedArrayUsingSelector:@selector(intValue)];
直接回答问题:
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];
}];
NSString
有一个方法叫intValue
- 这就是你要找的。
当然,更好的解决方案是使用 s 数组NSNumber
而不是NSString
s 数组。
您不必更改每个数组值的类型来对 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;
}];