2017-03-16 115 views
2

我有一个NSArray的实例,里面有NSArray的实例。内部数组仅包含NSString的实例。我需要按选定的索引按字母顺序对嵌套数组进行排序。如何使用嵌套NSArray对NSArray进行排序

E.g.

@[ 
    @[@"test",@"B",@"test2"], 
    @[@"bla",@"A",@"bla"], 
    @[@"xyz",@"C",@"123"] 
] 

用户选择索引1,升序排序。结果应该是:

@[ 
    @[@"bla",@"A",@"bla"], 
    @[@"test",@"B",@"test2"], 
    @[@"xyz",@"C",@"123"] 
] 

回答

3

您可以使用sortedArrayUsingComparator

NSArray *array = @[@[@"test",@"B",@"test2"], 
        @[@"bla",@"A",@"bla"], 
        @[@"xyz",@"C",@"123"]]; 

NSInteger index = 1; 

NSArray *sorted = [array sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { 
    return [obj1[index] compare:obj2[index] options:NSCaseInsensitiveSearch]; 
}]; 

显然,如果子阵列具有不同数量的项目,或者如果他们不是所有的字符串,你可能会包括一些额外的逻辑来处理那,但它说明了基本的想法。

+0

就是这样。谢谢。 –