我从另一个动态数组couples
中检索了一个NSString-Objects(valuesFirstdance
)数组。我知道字符串总是包含整数。我需要值为integer类型来排序couples
数组。我如何更改每个数组值的类型?
由于
couples = [valuesFirstdance allKeys];
NSArray* couples2 = [couples sortedArrayUsingSelector:@selector(intValue)];
答案 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;
}];