以升序显示记录 - 逻辑问题

时间:2012-04-05 17:40:45

标签: iphone objective-c ios json cocoa-touch

我有一个JSON字符串,如下所示;

{
    "1": {
        "name": "Jerry",
        "age": "12"

    },
    "2": {
        "name": "Bob",
        "age": "16"

    "3": {.....
}

我只显示了2条记录,但此JSON中将有100条记录。这个1,2,3等中有一个订单是记录的订单号。

我正在订购这些记录(如显示第1条记录,然后是第2条和第3条,依此类推)。我的代码如下。

这里有一个问题,当我有超过10条记录时,它不会按照订单显示记录。它首先显示1然后是11,12,13 ......直到19.然后它显示2然后21,22,23 ....直到29。

我的代码如下,如何修改它以解决我的问题?

可能的解决方案:如果我们可以从小于10的数字中添加前导0,则应该正确过滤掉。但我知道这不是正确的方法。

NSDictionary *dic = content;

            self.mutArr = [[NSMutableArray alloc] init];

            NSArray *array = [dic allKeys];
            NSArray * sortedArray = [array sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

            for (NSString *str in sortedArray)
            {
                NSDictionary *dic2 = [dic objectForKey:str];
                Person *person = [[Person alloc] init];            
                person.nameOfRestaurant=[dic2 objectForKey:@"name"];
                person.personStartDate=[dic2 objectForKey:@"age"];

                [self.mutArr addObject:person];

            }

            self.personEntries = [NSArray arrayWithArray:self.mutArr];

1 个答案:

答案 0 :(得分:0)

这是因为您按字典排序数字(即好像它们是单词)。您应该提供自己的排序比较器实现,它将字符串转换为整数,然后才对它们进行排序以进行排序。