2012-03-14 9 views
0

私は2つのNSMutableDictionaryオブジェクトを持っています。 Dict 1はdict 2より少ないキーしか持っていませんが、両方の辞書が共有するキーは構文が同じです。私はdict 1をdict 2のそれらのキーの値で再ソートしたいと思っています.Dict 2の値は整数です。1つの辞書を別のiPhoneと並べ替える

誰かが私を始められますか?

EDIT: 私はキーの配列とキーと数値の辞書を持っています。ディクショナリには、配列内のキー/オブジェクトより多くのキーと値があります。私は辞書からそれらのキーの対応する値で配列を並べ替えるしたいと思います。

ご質問のやり直しは申し訳ありませんが、これはより正確です。

+0

こんにちは、私は申し訳ありませんが、この文はどんな意味がありません:「Dictの1がdictの2よりも少ないキーを持っていますが、両方にあるキーがありますまったく同じ。"たぶんタイプミス? – amattn

+0

私は質問を更新しました。私は彼らの両方のキーが同じ文字列であると言うことを意味したが、dict 2はdictにないキーを持っている1 – Eric

答えて

0

sortedArrayUsingComparatorメソッド呼び出しを探していますか?これは1つの配列をとり、ソートされた要素を持つ配列を返します。

フィールド「ソート順」の値に基づいて辞書をソートするサンプルコードです。あなたはこれらの呼び出しのドキュメントを読んでください。

NSComparisonResult (^sortBlock)(id, id) = ^(id obj1, id obj2) { 

    if ([[obj1 objectForKey:@"sortorder"] intValue] > [[obj2 objectForKey:@"sortorder"] intValue]) { 
     return (NSComparisonResult)NSOrderedDescending; 
    } 
    if ([[obj1 objectForKey:@"sortorder"] intValue] < [[obj2 objectForKey:@"sortorder"] intValue]) { 
     return (NSComparisonResult)NSOrderedAscending; 
    } 
    return (NSComparisonResult)NSOrderedSame; 
}; 

+ (NSArray *) returnSortedArrayByAlpha:(NSArray*) inputArray whichField:(NSString*) whichField { 

    NSArray * sortedArray = [inputArray sortedArrayUsingComparator:sortBlock]; 
    return sortedArray; 
} 
+0

配列と辞書でそのコードを追加できますか? [array sortedArrayUsingComporator ...]のようなコンパイラ関数? – Eric

0

ここでは、基本的な誤解があるかもしれません。 NSDictionaryおよびNSSetオブジェクトは常にソートされません。

NSArrayNSOrderedSetのオブジェクトのみがソートされます。

あなたがしたいことは、NSArrayという3番目のオブジェクトを作成し、それに必要なキーを設定することです。

NSArrayを反復処理すると、ソートされた配列の順に辞書オブジェクトにアクセスできます。

+0

私は私の質問を編集しました。その辞書の中のいくつかのオブジェクトだけを反復する方法がわかりません – Eric

関連する問題