我有一个NSMutableArray,它包含对象作为数据,它包含三个值,即日期,名称和数量。
所以我的数组看起来像这样
date name amount
08/12 atest 1000
08/13 btest 200
08/14 ctest 3000
08/15 dtest 4000
08/13 etest 5000
现在我正在使用此代码对数据进行排序
金额
[tableAry sortUsingDescriptors:[NSArray arrayWithObject:
[NSSortDescriptor sortDescriptorWithKey:@"amount"
ascending:NO selector:@selector(caseInsensitiveCompare:)]]];
但它说我的200条记录大于1000条记录分类数据是这样的:
5000
4000
3000
200
1000
答案 0 :(得分:5)
看起来金额存储为NSString
值。您可以按照您链接的答案中描述的方式修复它(即通过将数字的字符串表示替换为存储为NSNumber
的数字表示),或者通过向描述符添加intValue
来解决它:
[tableAry sortUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"amount.intValue" ascending:NO]]];
答案 1 :(得分:1)
您将金额与字符串进行比较,而不是数字。按字母顺序排序规则,字符串200
比字符串1000
“大”。
这是一个经典的“将数字排序为字符串”的错误。
您提到的the question答案正是您解决问题的方法。