数値ファイル名のソートにはまったのでメモ
名前が数値となるファイル名を取得し、配列に入れると
1.csv
10.csv
2.csv
のように並ばれてしまう。
最初はsortedArrayUsingSelectorを使用していたが
NSArray *listafter = [list sortedArrayUsingSelector:@selector(compare:)];
並び順に変化がなかったので
そこでオブジェクトを作成し、ソート用の数値項目でソートすることで
想定した並び順となった。
ソースは下記
@interface SubItems : NSObject
@property (nonatomic,assign) long no;
@property (nonatomic,strong) NSString *name;
@end
@implementation SubItems
@end
- (void)sortList{
long tmpcnt;
NSString *tmpname;
NSMutableArray *sortarray = [NSMutableArray array];
for (NSString *tmpcsv in list) {
SubItems *subItems = [[SubItems alloc] init];
tmpname = [tmpcsv stringByDeletingPathExtension];
tmpcnt = tmpname.longLongValue;
subItems.no = tmpcnt;
subItems.name = tmpcsv;
[sortarray addObject:subItems];
}
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"no" ascending:YES];
NSArray *sortarrayafter = [sortarray sortedArrayUsingDescriptors:@[sort]];
NSMutableArray *listafter = [NSMutableArray array];
for (SubItems *subItems in sortarrayafter) {
[listafter addObject:subItems.name];
NSLog(@"sorted subItems = %@",subItems.name);
}
NSLog(@"sorted list = %@",listafter);
}
