我有一个数组,我们称之为“数组”,在数组内部我有这样的对象:
“0这是一个对象”
“4这是另一个对象”
“2我们也把2放在这里!”
“1到底是什么,这是另一个!”
“3我们把这个放在这里”
我想用这个数字对数组进行排序,所以它会变成这个:
“0这是一个对象”
“1到底是什么,这是另一个!”
“2我们也把2放在这里!”
“3我们把这个放在这里”
“4这是另一个对象”
答案 0 :(得分:8)
您可以使用NSArray's
sortedArrayUsingFunction:Context:方法为您排序。此方法采用可用于比较数组中两个项的函数。
#import <Foundation/Foundation.h>
NSInteger firstNumSort(id str1, id str2, void *context) {
int num1 = [str1 integerValue];
int num2 = [str2 integerValue];
if (num1 < num2)
return NSOrderedAscending;
else if (num1 > num2)
return NSOrderedDescending;
return NSOrderedSame;
}
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSArray *array = [NSArray arrayWithObjects:@"0 Here is an object",
@"4 Here's another object",
@"25 Let's put 2 here too!",
@"1 What the heck, here's another!",
@"3 Let's put this one right here",
nil];
NSLog(@"Sorted: %@", [array sortedArrayUsingFunction:firstNumSort context:NULL]);
[pool drain];
return 0;
}
答案 1 :(得分:1)
使用sortedArrayUsingFunction:
或sortedArrayUsingComparator:
,并使用compare:options:
选项传递将NSNumericSearch
发送到其中一个字符串的函数或块。