重複の可能性:
NSArray で自然な並べ替えを行うには?
私は次のような配列を持っています: 4.value、8.value、1.value、3.value、5.value など、無制限のオブジェクトがあります。
この配列を 1 から最後の番号まで並べ替える方法はありますか? そう:
1.値、2.値、3.値.....
ありがとう!
重複の可能性:
NSArray で自然な並べ替えを行うには?
私は次のような配列を持っています: 4.value、8.value、1.value、3.value、5.value など、無制限のオブジェクトがあります。
この配列を 1 から最後の番号まで並べ替える方法はありますか? そう:
1.値、2.値、3.値.....
ありがとう!
配列内のオブジェクトの型が明確ではないため、次のコードを型に合わせて変更する必要がありますが、これは通常、配列を並べ替える方法です。
NSMutableArray* array = [[NSMutableArray alloc] init];
[array addObject:@"3.value"];
[array addObject:@"1.value"];
[array addObject:@"4.value"];
[array addObject:@"2.value"];
NSArray* sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) {
// Write whatever comparison code is appropriate for your objects here
// The following will only work for simple strings
return [obj1 caseInsensitiveCompare:obj2];
}];
NSLog(@"%@", sortedArray);
編集: 文字列を使用していて、文字列が常にフォーマットされている場合は、「Integer.String」という形式を取るため、次のコードを使用して配列をソートする必要があります。
NSArray* sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) {
NSInteger left = [obj1 integerValue];
NSInteger right = [obj2 integerValue];
if (left > right) {
return NSOrderedDescending;
}
if (left < right) {
return NSOrderedAscending;
}
return NSOrderedSame;
}];
文字列を比較するだけの場合、文字列は最初の文字でソートされるため、@"123.value" は "9.value" の前になります。
NSArray *sortedarray = [[YourArray allObjects]
sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
NSLog(@"%@",sortedarray);