在IOS中使用NSSortDescriptorsorting数组(NSString +数字)?
我想使用NSSortDescriptor
对数组进行NSSortDescriptor
。
这是我的代码
NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"filename" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]; [arrDocuments sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
我得到的是这个不正确的结果。
- 新build文件夹1
- 新build文件夹11
- 新build文件夹12
- 新build文件夹2
预期
- 新build文件夹1
- 新build文件夹2
- 新build文件夹11
- 新build文件夹12
localizedCaseInsensitiveCompare:
函数是一个字母search。
你会更好地使用像…
compare:options:
与选项NSNumericSearch
这对待任何数字作为数字,所以sorting他们NSNumericSearch
等…
按字母顺序排列虽然10之前2因此你的问题。
整个代码看起来像…
NSSortDescriptor *sd = [NSSortDescriptor sortDescriptorWithKey:@"fileName" ascending:YES comparator:^(NSString *obj1, NSString *obj2) { return [obj1 compare:obj2 options:NSNumericSearch | NSCaseInsensitiveSearch]; }]; [arrDocuments sortUsingDescriptors:@[sd]];