我想使用 NSSortDescriptor
对数组进行排序。
这是我的代码
NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"filename" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
[arrDocuments sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
我得到的是这个不正确的结果。
- New Folder 1
- New Folder 11
- New Folder 12
- New Folder 2
预期
- New Folder 1
- New Folder 2
- New Folder 11
- New Folder 12
最佳答案
函数localizedCaseInsensitiveCompare:
是按字母顺序搜索。
你最好使用像...这样的函数
compare:options:
使用选项NSNumericSearch
,这会将任何数字视为数字,因此对它们进行排序 1、2、10 等...
按字母顺序,10 排在 2 之前,因此你的问题。
整个代码看起来像......
NSSortDescriptor *sd = [NSSortDescriptor sortDescriptorWithKey:@"fileName" ascending:YES comparator:^(NSString *obj1, NSString *obj2) {
return [obj1 compare:obj2 options:NSNumericSearch | NSCaseInsensitiveSearch];
}];
[arrDocuments sortUsingDescriptors:@[sd]];
关于ios - 在IOS中使用NSSortDescriptor对数组(NSString + Number)进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17719307/