3

私は配列を持っています。それを「配列」と呼びましょう。配列内には次のようなオブジェクトがあります。

「0 ここにオブジェクトがあります」

「4 ここに別のオブジェクトがあります」

「2ここにも2入れよう!」

「1 なにこれ、またあるよ!」

「3 これをここに入れましょう」

その番号で配列をソートしたいので、次のようになります。

「0 ここにオブジェクトがあります」

「1 なにこれ、またあるよ!」

「2ここにも2入れよう!」

「3 これをここに入れましょう」

「4 ここに別のオブジェクトがあります」

4

2 に答える 2

8

NSArray's sortedArrayUsingFunction:Context:メソッドを使用して、これらをソートできます。このメソッドは、配列内の 2 つの項目を比較するために使用できる関数を受け取ります。

#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;
}
于 2009-12-08T23:52:29.457 に答える
1

sortedArrayUsingFunction:またはを使用し、オプションを使用して、文字列の 1 つにsortedArrayUsingComparator:送信する関数またはブロックを渡します。compare:options:NSNumericSearch

于 2009-12-09T01:13:03.973 に答える