NSMutable 딕셔너리에 액세스하기 위한 Objective-C의 각 루프에 대해
Objective-C에서 변환 가능한 사전 키와 값에 액세스하는 데 어려움이 있습니다.
예를 들어 다음과 같습니다.
NSMutableDictionary *xyz=[[NSMutableDictionary alloc] init];
키와 값을 설정할 수 있습니다.각 키와 값에 액세스하고 싶은데, 설정된 키의 수를 알 수 없습니다.
PHP에서는 다음과 같이 매우 간단합니다.
foreach ($xyz as $key => $value)
Objective-C에서 어떻게 가능합니까?
for (NSString* key in xyz) {
id value = xyz[key];
// do stuff
}
NSFastEnumeration 프로토콜(10.5+ 및 iOS에서 사용 가능)을 준수하는 모든 클래스에 대해 작동합니다.NSDictionary
는 값이 아닌 키를 열거할 수 있는 몇 안 되는 컬렉션 중 하나입니다.Collections Programming Topic에서 빠른 열거에 대해 읽어보시기 바랍니다.
그러나 컬렉션을 열거하는 동안에는 절대 수정하지 말아야 한다는 점을 덧붙여야 합니다.
블록을 사용하여 키와 값을 열거하는 10.6+ 옵션을 빼놓을 수 없습니다.
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id object, BOOL *stop) {
NSLog(@"%@ = %@", key, object);
}];
액션을 동시에 실행하는 경우:
[dict enumerateKeysAndObjectsWithOptions:NSEnumerationConcurrent
usingBlock:^(id key, id object, BOOL *stop) {
NSLog(@"%@ = %@", key, object);
}];
열거 중에 사전을 변환해야 하는 경우:
for (NSString* key in xyz.allKeys) {
[xyz setValue:[NSNumber numberWithBool:YES] forKey:key];
}
사전을 열거하는 가장 쉬운 방법은
for (NSString *key in tDictionary.keyEnumerator)
{
//do something here;
}
어디에tDictionary
는NSDictionary
또는NSMutableDictionary
반복하고 싶을 거야
Enumeration을 읽어보실 것을 권장합니다. Collections Programming Guide for Cocoa의 Collections Elements(컬렉션의 요소)를 살펴봅니다.필요한 샘플 코드가 있습니다.
10.5와 iPhone OS에 고속 열거가 추가되어 구문설탕뿐만 아니라 상당히 빠릅니다.이전 런타임(예: 10.4 이상)을 대상으로 해야 하는 경우 이전 방법으로 다음을 열거해야 합니다.
NSDictionary *myDict = ... some keys and values ...
NSEnumerator *keyEnum = [myDict keyEnumerator];
id key;
while ((key = [keyEnum nextObject]))
{
id value = [myDict objectForKey:key];
... do work with "value" ...
}
열거자 개체는 해제하지 않으며 재설정할 수 없습니다.다시 시작하려면 사전에서 새 열거자 개체를 요청해야 합니다.
를 사용하여 모든 키에 액세스하여 키를 루프할 수 있습니다.
언급URL : https://stackoverflow.com/questions/2143372/for-each-loop-in-objective-c-for-accessing-nsmutable-dictionary
'programing' 카테고리의 다른 글
VBA/Excel에서 X행 아래의 모든 항목을 삭제하려면 어떻게 해야 합니까? (0) | 2023.04.12 |
---|---|
문자열 C#의 줄 바꿈 치환 (0) | 2023.04.12 |
Swift에서 문자열을 연결하려면 어떻게 해야 하나요? (0) | 2023.04.12 |
SQL Server에서 INSER JOIN을 사용하여 삭제하려면 어떻게 해야 합니까? (0) | 2023.04.12 |
WPF 버튼의 디폴트 마우스 오버 효과를 삭제하려면 어떻게 해야 합니까? (0) | 2023.04.12 |