如何使用嵌套的 NSArray 对 NSArray 进行排序

How to sort an NSArray with nested NSArray

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

例如

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

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

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

您可以使用 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];
}];

显然,如果子数组具有不同数量的项或者它们不都是字符串,您可能会包含一些额外的逻辑来处理它,但它说明了基本思想。