简体   繁体   中英

Sorting a multidimensional array in objective-c

I'm trying to sort a multidimensional array in objective-c i know that i can sort a single dimensional array using the line of code below:

NSArray *sortedArray = [someArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

I can't seem to figure out how to sort a 2D array like the one below:

 ( ("SOME_URL", "SOME_STORY_TITLE", "SOME_CATEGORY"),
    ("SOME_URL", "SOME_STORY_TITLE", "SOME_CATEGORY"),
    ("SOME_URL", "SOME_STORY_TITLE", "SOME_CATEGORY") );

If someone could provide me code that would sort the array by SOME_CATEGORY it would be of great help to me.

Thanks,

Zen_Silence

You need to use -sortedArrayUsingFunction:context: or sortedArrayUsingFunction:context:hint: .

static NSInteger order (id a, id b, void* context) {
    NSString* catA = [a lastObject];
    NSString* catB = [b lastObject];
    return [catA caseInsensitiveCompare:catB];
}
...
NSArray* sortedArray = [someArray sortedArrayUsingFunction:order context:NULL];

Alternatively, create a custom class for your inner "array" (which is more like a record), and implement a -compareByCategory: method on it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM