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];
4

1 回答 1

0

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

于 2012-04-05T17:44:23.620 回答