2012-04-05 9 views
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]; 

答えて

0

あなたは数字辞書順(すなわち、彼らは言葉れたかのように)ソートされているためです。文字列を整数に変換し、順序付けのためにそれらを比較するだけの並べ替え比較関数の独自の実装を提供する必要があります。

+0

これを行う方法を説明するチュートリアル/サンプルコードはありますか? – user1315906

+0

@ user1315906 [このリンク](http://stackoverflow.com/a/1422881/335858)の回答は、あなたがやろうとしていることの実例を提供しています。 – dasblinkenlight

関連する問題