通过数组中包含的int对NSArray进行排序

时间:2009-12-08 23:38:13

标签: cocoa sorting nsarray int

我有一个数组,我们称之为“数组”,在数组内部我有这样的对象:

“0这是一个对象”

“4这是另一个对象”

“2我们也把2放在这里!”

“1到底是什么,这是另一个!”

“3我们把这个放在这里”

我想用这个数字对数组进行排序,所以它会变成这个:

“0这是一个对象”

“1到底是什么,这是另一个!”

“2我们也把2放在这里!”

“3我们把这个放在这里”

“4这是另一个对象”

2 个答案:

答案 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发送到其中一个字符串的函数或块。