2

次のような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];
4

1 に答える 1

0

これは、辞書式順序で(つまり、単語であるかのように)数値を並べ替えているためです。文字列を整数に変換するソート比較機能の独自の実装を提供してから、順序付けのためにそれらを比較する必要があります。

于 2012-04-05T17:44:23.620 に答える