سؤال

لدي مجموعة، دعونا نسميها "صفيف" وداخل الصفيف لدي أشياء مثل هذا:

"0 هنا هو كائن"

"4 هنا كائن آخر"

"2 دعنا نضع 2 هنا أيضا!"

"1 ما هيك، هنا آخر!"

"3 دعنا نضع هذا واحد هنا"

أرغب في فرز المصفوفات بهذا الرقم، لذلك سوف تتحول إلى هذا:

"0 هنا هو كائن"

"1 ما هيك، هنا آخر!"

"2 دعنا نضع 2 هنا أيضا!"

"3 دعنا نضع هذا واحد هنا"

"4 هنا كائن آخر"

هل كانت مفيدة؟

المحلول

يمكنك استخدام NSArray's SortEdRayusingFunction: السياق: طريقة لفرز هذه لك. تأخذ هذه الطريقة دالة يمكن استخدامها لمقارنة عنصرين في الصفيف.

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

نصائح أخرى

يستخدم sortedArrayUsingFunction: أو sortedArrayUsingComparator:, ، وتمرير وظيفة أو كتلة التي ترسل compare:options: إلى واحدة من السلاسل، باستخدام NSNumericSearch اختيار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top