2012-04-05 39 views
2

我有一个JSON字符串,如下所示;按升序显示记录 - 逻辑问题

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

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

    "3": {..... 
} 

我只显示了2条记录,但是在这个JSON中会有100条记录。这里有一个命令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]; 

回答

0

这是因为你的排序编号字典顺序(即,如果他们)。您应该提供自己的实现将字符串转换为整数的排序比较器,然后才能将它们进行比较以进行排序。

+0

是否有任何教程/示例代码解释如何做到这一点? – user1315906 2012-04-05 17:46:04

+0

@ user1315906 [此链接](http://stackoverflow.com/a/1422881/335858)上的答案提供了一个可以做你正在做的事情的例子。 – dasblinkenlight 2012-04-05 17:47:48