我有一个包含数字的字符串数组,例如Shift 1 RT9909
我按如下方式对数组进行排序:
NSSet *forms = dataObject.rtForms;
NSSortDescriptor *nameDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"type" ascending:YES];
NSArray *sorted = [forms sortedArrayUsingDescriptors:[NSArray arrayWithObject:nameDescriptor]];
当元素数量低于10时,此方法正常。此点Shift 10 RT9909
放在前面Shift 2 RT9909
。
所以我的问题是如何对数组进行排序,以便Shift 10 RT9909
跟随Shift 9 RT9909
答案 0 :(得分:2)
由于Larme建议您将Comparator
与NSNumericSearch
一起使用,您还可以与NSSortDescriptor
结合使用
NSSortDescriptor *nameDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"type" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {
return [(NSString *)obj1 compare:(NSString *)obj2 options:NSNumericSearch];
}];
NSArray *sortedArray = [anArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:nameDescriptor]];