فرز nsarray من قبل int الواردة في الصفيف
سؤال
لدي مجموعة، دعونا نسميها "صفيف" وداخل الصفيف لدي أشياء مثل هذا:
"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
اختيار.
لا تنتمي إلى StackOverflow