数値ファイル名のソートにはまったのでメモ
名前が数値となるファイル名を取得し、配列に入れると
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); }