2009-09-25 35 views
52

NSMutableDictionaryのキー/値を順次(テーブルビューで)表示するには、インデックスでアクセスする必要があります。インデックスによるアクセスがそのインデックスにキーを与える可能性がある場合、私はその値を得ることができます。それを行う方法や別のテクニックがありますか?NSMutableDictionaryのオブジェクトにインデックスでアクセスする

+0

次の場合は、次のようになります。NSMutableDictionary * tmpDict = [[NSMutableDictionary alloc] init]; [tmpDict setObject:@ "CN-GSM" forKey:@ "Provider:"]; [tmpDict setObject:@ "10010" forKey:@ "Number:"]; [tmpDict setObject:@ "Yes" forKey:@ "Free:"]; NSLog(@ "%@"、[tmpdict allKeys]); [tmpDictリリース];出力がtmpDictに追加した値で順序付けられていないのはなぜですか? – ZYiOS

答えて

119

オブジェクトのキーを含むNSArrayを取得できます。 allKeysメソッド。インデックスでそれを調べることができます。配列にキーが表示される順序は不明です。例:

NSMutableDictionary *dict; 

/* Create the dictionary. */ 

NSArray *keys = [dict allKeys]; 
id aKey = [keys objectAtIndex:0]; 
id anObject = [dict objectForKey:aKey]; 

EDIT:実際には、簡単に例えば、高速な列挙を使用して行われ、私はあなたがやりたいことをしようとしているものを理解していればされています

NSMutableDictionary *dict; 

/* Put stuff in dictionary. */ 

for (id key in dict) { 
    id anObject = [dict objectForKey:key]; 
    /* Do something with anObject. */ 
} 

EDIT:固定タイプミスがで指摘しましたマルコ。

+2

"allkeys"は "allKeys" – Mark

+0

tableviewの 'cellForRowAtIndexPath'には次のようなものがあります: 'NSArray * keys = [colors allKeys]; NSString * key = [keys objectAtIndex:indexPath.row]; cell = [tv dequeueReusableCellWithIdentifier:@ "CellColour" forIndexPath:indexPath]; cell.textLabel.text = [colorsオブジェクトのキー:キー]; cell.backgroundColor = [self colorFromHexString:key]; ' –

9

辞書のallKeysメソッドですべてのキーの配列を取得できます。インデックスで配列にアクセスすることができます。ただし、辞書自体には順序がありませんので、辞書を変更する前後のキーの順序は完全に異なります。

関連する問題