二次元のNSAarrayをソートする方法
久々の更新です。
一次元の配列の並び替えの情報はいくらでもあるのですが、配列を配列化している場合、その2次側の配列の2番目の要素を元に並び替えたいという様なのってあまり無かったのでUPします。
元ネタは、StackOverflowにありました。ありがとうございます!
単純なので、ソースだけ公開します。
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //一次元配列を作成 NSArray *one = @[@"one", @"two", @"three", @"1"]; NSArray *two = @[@"one", @"two", @"three", @"2"]; NSArray *three = @[@"one", @"two", @"three", @"3"]; //これが元になる二次元配列 NSArray *array = [NSMutableArray arrayWithObjects:three,two,one, nil]; //順番の確認 NSLog (@"**** Before *****"); for (NSArray *number in array){ //最後の数字だけ表示する NSLog (@"number=%@",number[3]); } array = [array sortedArrayUsingComparator:^(id a, id b) { NSString *numA = [a objectAtIndex:3]; NSString *numB = [b objectAtIndex:3]; return [numA compare:numB]; }]; //順番の確認 NSLog (@"**** After *****"); //順番の確認 for (NSArray *number in array){ //最後の数字だけ表示する NSLog (@"number=%@",number[3]); } }
実行結果
2015-08-12 14:14:09.365 sortTest[37002:7016350] **** Before ***** 2015-08-12 14:14:09.366 sortTest[37002:7016350] number=3 2015-08-12 14:14:09.367 sortTest[37002:7016350] number=2 2015-08-12 14:14:09.367 sortTest[37002:7016350] number=1 2015-08-12 14:14:09.367 sortTest[37002:7016350] **** After ***** 2015-08-12 14:14:09.367 sortTest[37002:7016350] number=1 2015-08-12 14:14:09.367 sortTest[37002:7016350] number=2 2015-08-12 14:14:09.367 sortTest[37002:7016350] number=3 <



















