objective-c - 如何使用嵌套 NSArray 对 NSArray 进行排序

标签 objective-c sorting 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];
}];

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

关于objective-c - 如何使用嵌套 NSArray 对 NSArray 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42843797/

相关文章:

ios - 将 NSNumber 转换为 NSString 问题

java - 对 map 列表进行排序

Javascript - 改进对象集合的排序

sorting - Silverstripe 3 : how to sort pages in the CMS sitetree by title, 日期等

nsstring 的 IOS 发布和分配消息差异

ios - 不同项目的不同宽度 - 在 iCarousel 中

iOS 十六进制加法

ios - 如何在 iOS 中从 sqlite 数据库检索和存储 NSArray

ios - 如何获取基于每个 LocaleIdentifier 的国家/地区名称列表?

ios - 我无法从我的 json 中获取所有 URL。此代码仅显示 json 的第一个 URL