web-dev-qa-db-ja.com

NSMutableDictionaryでNSEnumeratorを使用する方法は?

NSMutableDictionaryでNSEnumeratorを使用して、すべてのキーと値を出力するにはどうすればよいですか?

ありがとう!

20
Devoted

NSEnumeratorを使用する必要がない限り、高速列挙(より高速)と簡潔を使用できます。

for(NSString *aKey in myDictionary) {
    NSLog(@"%@", aKey);
    NSLog(@"%@", [[myDictionary valueForKey:aKey] string]); //made up method
}

また、高速列挙で列挙子を使用することもできます。

NSEnumerator *enumerator = [myDictionary keyEnumerator];

for(NSString *aKey in enumerator) {
    NSLog(@"%@", aKey);
    NSLog(@"%@", [[myDictionary valueForKey:aKey] string]); //made up method
}

これは、配列で逆列挙子を実行する場合などに役立ちます。

93
Corey Floyd

NSDictionaryクラス参照 から:

辞書の内容は、それぞれNSEnumeratorkeyEnumeratorによって返されるobjectEnumeratorオブジェクトを使用して、キーまたは値で列挙できます。

言い換えると:

NSEnumerator *enumerator = [myMutableDict keyEnumerator];
id aKey = nil;
while ( (aKey = [enumerator nextObject]) != nil) {
    id value = [myMutableDict objectForKey:anObject];
    NSLog(@"%@: %@", aKey, value);
}
8
BJ Homer

これがオブジェクト検索なしのバージョンです。 objectForKey呼び出しが存在しないことに注意してください。 keyEnumeratorとobjectEnumeratorの両方を使用します。

id aKey = nil;
NSEnumerator *keyEnumerator = [paramaters keyEnumerator];
NSEnumerator *objectEnumerator = [paramaters objectEnumerator];
while ( (aKey = [keyEnumerator nextObject]) != nil) {
    id value = [objectEnumerator nextObject];
    NSLog(@"%@: %@", aKey, value);
}
3
İzzet Okbay