如何使用amount将包含对象的NSMutableArray排序为数据

时间:2013-08-12 16:32:22

标签: iphone ios

我有一个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

2 个答案:

答案 0 :(得分:5)

看起来金额存储为NSString值。您可以按照您链接的答案中描述的方式修复它(即通过将数字的字符串表示替换为存储为NSNumber的数字表示),或者通过向描述符添加intValue来解决它:

[tableAry sortUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"amount.intValue" ascending:NO]]];

答案 1 :(得分:1)

您将金额与字符串进行比较,而不是数字。按字母顺序排序规则,字符串200比字符串1000“大”。

这是一个经典的“将数字排序为字符串”的错误。

您提到的the question答案正是您解决问题的方法。