我根据经验使用此代码对数组进行排序
sortexp = [NSSortDescriptor sortDescriptorWithKey: @"Experience" ascending:YES];
arrData = [arrData sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortexp]];
NSLog(@"%@",arrData);
[tblResponseData reloadData];
NSLog(@"Experience");
但是问题是比较一位数字和两位数字时计数错误。
示例-
array = {10,3,11,35,6,7}
,排序后将array = {10,11,3,35,6,7}
因此,如何使用带数字的前缀
0
将我的一位数字转换为两位数,我的数据来自服务器,所以我无法更改它,所以这是我的职责。 最佳答案
基本上发生这种情况是因为您将数字排序为字符串,以便以这种方式给出结果(3> 11表示它只比较第一个数字,如果第一个数字相同然后比较下一个),则无需更改数字,但是根据数字而不是字符串对它们进行排序。为此,您应该使用
sortexp = [NSSortDescriptor sortDescriptorWithKey: @"Experience" ascending:YES selector:@selector(localizedStandardCompare:)];
它将您的数字作为数字进行比较,并将字符串作为字符串进行比较。
编辑:
您还可以对“使用”块进行排序。
NSArray *sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) {
if ([[obj1 valueForKey:@"Experience"] integerValue] > [[obj2 valueForKey:@"Experience"] integerValue]) {
return (NSComparisonResult)NSOrderedDescending;
}
if ([[obj1 valueForKey:@"Experience"] integerValue] < [[obj2 valueForKey:@"Experience"] integerValue]) {
return (NSComparisonResult)NSOrderedAscending;
}
return (NSComparisonResult)NSOrderedSame;
}];
关于ios - NSSortDescriptor问题,对一位数字和两位数进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26210933/