3

私はNSArrayこのように並べ替える良い方法を見つけるのに苦労しています:

これは の配列でありNSDictionary、長い文字列内の各単語の出現を追跡するために使用しています。したがって、次のようになります。

[{"hello", 5}, {"world", 10}, {"this", 1}, {"that", 3}]

これをNSDictionary値で並べ替えて、次のようにします。

[{"world", 10}, {"hello", 5}, {"that", 3}, {"this", 1}]

NSSortDescriptorsortDeciptorsのメソッドを調べましたinitWithKeyが、キーの名前が同じである必要があり、これは私の場合には当てはまりません。

この場合、何を使用することをお勧めしますか? 前もって感謝します!

4

2 に答える 2

4

これまでで最も効率的な方法ではないかもしれませんが、これで十分です

NSArray * d = @[@{@"world": @10}, @{@"hello": @5}, @{@"that": @3}, @{@"this": @1}];
[d sortedArrayUsingComparator:^NSComparisonResult(NSDictionary * obj1, NSDictionary * obj2) {
    NSNumber * v1 = obj1[[obj1 allKeys][0]];
    NSNumber * v2 = obj2[[obj2 allKeys][0]];
    return [v1 compare:v2];
}];

とにかく、データ編成はこのタスクにはあまり適していません。内部データ構造はディクショナリであるため、値の収集はかなり面倒です。内側のものを配列にすることを検討してください。

于 2013-06-30T01:55:45.037 に答える
3

あなたのデザインはあなたの計画と一致していないようです。内部コレクションは、ここでは辞書であってはなりません。それによってあなたは何も得ていません。実際、それはあなたの邪魔をしているだけです。それらを 2 要素の配列にするか、外側のコレクションをキーとして単語を持つ辞書にして、入れ子を完全に削除します。

于 2013-06-30T01:57:15.597 に答える