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 |