6

NSMutableDictionaryWebサービスで受信したデータを保存するためにデータを保存しています。

データをアルファ順に表示したいのですが、辞書は独自の方法でデータを保存するため、iOS5とiOS6では異なる順序になります。iOS5は問題ありませんが、iOS6では順序が変わります。

intキーとオブジェクトを値として格納しています。

オブジェクトにはID、名前、説明が含まれます。

EX:
  key  value
  1 -  (12,bhgjksd,kijdh)
  6 -  (13,kjfd,ikjk)
  2 -  (14,ljiuhbdf,dsjhfj)

Object.Nameプロパティで辞書を並べ替えるにはどうすればよいですか。または、Object.Nameの並べ替え順序に基づいてキーを取得します。

キーでソートしたくないオブジェクトとして値部分に格納されているObject.Nameでソートしたい。

どんな種類の助けも歓迎します.....よろしくお願いします。

4

2 に答える 2

6

これを試して、

NSArray *sortedKeys = [dict keysSortedByValueUsingComparator: ^(id obj1, id obj2) {

     return (NSComparisonResult)[obj1.name compare:obj2.name];;
}];

sortedKeysプロパティの順にソートされた配列内のすべてのキーを取得しobject.nameます。これらのキーを使用して、辞書から値を取得できます[dict valueForKey:[sortedKeys objectAtIndex:i]]。詳細については、アップルのドキュメントを参照してください。

于 2012-12-06T06:54:16.547 に答える
3
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"Object.Name" ascending:YES];
[items sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];

また、

NSArray *ordered = [myDictionary keysSortedByValueUsingComparator:^NSComparisonResult(id obj1, id obj2){
    return [obj1.name compare:obj2.name];
}];
于 2012-12-06T07:00:32.063 に答える