2010-06-17 2 views
5

NSDictionary가 있고 개체를 반복하고 싶습니다. 그러나 동시에, 사전의 핵심을 알아야합니다.키와 객체를 가져 오는 동안 키를 모른 채 사전을 반복하는 방법은 무엇입니까?

특별하고 멋진 형식의 빠른 열거 형이 있었지만 정확한 구문을 잊어 버린 것을 기억합니다.

누구나?

for (id key in dictionary) { 
    NSLog(@"key: %@, value: %@", key, [dictionary objectForKey:key]); 
} 

here에서 촬영 :

답변

6

나는 당신이 원하는 것은이 같은 생각합니다.

+0

은 빠른 열거 형의 "일반 형식"과 유사합니다. 배열을 사용하는 동일한 것은 실제 객체를 반환합니다. 그래서 이것은 실제로 실제로 키를 반환하는 것이며, 그 값을 액세스하는 데 사용할 수 있습니까? 말이된다. – dontWatchMyProfile

1
for (id key in mydictionary) { 
    id mything = [mydictionary objectForKey:key]; 
} 
6

블록을 좋아하는 사람에게도 좋은 선택입니다. CFDictionaryApplyFunction : 제가 알기로

[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 

}] 
+3

+1 "fastEnumeration"변형보다 (Core Foundation의 'CFDictionaryApplyFunction'을 사용할 수 있으므로) * 많이 * 빠릅니다. 간단히 버킷을 반복하고 키와 값을 전달할 수 있기 때문에 각 요소에 대한 값 비싼 조회를 절약 할 수 있습니다. –

0

, 당신이 질문을 할 때, 같은 시간에 키와 값을 통과하는 단 하나 개의 방법이 있었다.

이 핵심 기반 기능을 사용하면 루프 본문에 대한 못생긴 C 함수 포인터와 많은 추악한 아직 무료 전화 브리지 된 주조가 포함됩니다.

@ zekel에는 modern way of iterating 사전이 있습니다. 투표 해!

+0

그건 그렇고,'enumerateKeysAndObjectsUsingBlock :'이 iOS 4에 도입되었습니다. 그래서이 질문을한지 4 일 후입니다 :) –

관련 문제