在objective-c中对多维数组进行排序

Zen*_*nce 2 sorting iphone objective-c multidimensional-array

我正在尝试在objective-c中对多维数组进行排序,我知道我可以使用下面的代码行对单维数组进行排序:

NSArray *sortedArray = [someArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚如何对2D数组进行排序,如下所示:

 ( ("SOME_URL", "SOME_STORY_TITLE", "SOME_CATEGORY"),
    ("SOME_URL", "SOME_STORY_TITLE", "SOME_CATEGORY"),
    ("SOME_URL", "SOME_STORY_TITLE", "SOME_CATEGORY") );
Run Code Online (Sandbox Code Playgroud)

如果有人可以提供我将通过SOME_CATEGORY对数组进行排序的代码,那对我来说将是非常有帮助的.

谢谢,

Zen_Silence

ken*_*ytm 5

你需要使用-sortedArrayUsingFunction:context: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];
Run Code Online (Sandbox Code Playgroud)

或者,为内部"数组"创建一个自定义类(更像是一个记录),并-compareByCategory:在其上实现一个方法.