Frage

Ich habe ein Array, nennen wir es "Array" und in dem Array habe ich Objekte wie folgt:

"0 Hier ist ein Objekt"

"4 Hier ist ein anderes Objekt"

"2 Lass uns auch 2 hier setzen!"

"1 Was zum Teufel, hier ist noch ein!"

"3 Lass uns diesen hier genau setzen"

Ich möchte die Arrays nach dieser Nummer sortieren, also wird sie sich in diese verwandeln:

"0 Hier ist ein Objekt"

"1 Was zum Teufel, hier ist noch ein!"

"2 Lass uns auch 2 hier setzen!"

"3 Lass uns diesen hier genau setzen"

"4 Hier ist ein anderes Objekt"

War es hilfreich?

Lösung

Sie können verwenden NSArray's sortEdArrayUSingFunction: Kontext: Methode, um diese für Sie zu sortieren. Diese Methode erfordert eine Funktion, mit der zwei Elemente im Array verglichen werden können.

#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;
}

Andere Tipps

Verwenden sortedArrayUsingFunction: oder sortedArrayUsingComparator:, und übergeben eine Funktion oder einen Block, der sendet compare:options: zu einem der Saiten, die die verwenden NSNumericSearch Möglichkeit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top