如何使用嵌套的 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];
}];
显然,如果子数组具有不同数量的项或者它们不都是字符串,您可能会包含一些额外的逻辑来处理它,但它说明了基本思想。
我有一个 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];
}];
显然,如果子数组具有不同数量的项或者它们不都是字符串,您可能会包含一些额外的逻辑来处理它,但它说明了基本思想。