我根据经验使用此代码对数组进行排序

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/

10-09 09:59