2019년 11월 12일 화요일

Objective-C NSMutableDictionary 활용법

오늘 포스팅 할 내용은 Objective-C 에서 주로 쓰이는 NSMutableDictionary 활용법에 대한 강좌 입니다.

NSMutableDictionary key/value 성 데이터를 관리의 목적으로 만들어진 Class 중 하나 입니다.

​NSMutableDictionary *variable = [[NSMutableDictionary alloc] init]; 과 같이 선언 하여 씁니다.

​간단히 문자열 "A" ~ "Z" 까지 실제 ASCII 코드값을 매칭 하는 샘플을 만들어 보겠습니다.


NSMutableDictionary *mapAlphaASCII = [[NSMutableDictionary alloc] init];
    
//값 할당.
for (NSInteger i = 65; i <= 90; i++)
{
    NSString *sKey;
    sKey = [NSString stringWithFormat:@"%c", (int)i];
    
    [mapAlphaASCII setValue:[NSNumber numberWithInteger:i] forKey:sKey];
}

//Key를 이용한 접근.
for (NSString *sKey in mapAlphaASCII)
{
    NSLog(@"Key[%@]=Value[%@]", sKey, [mapAlphaASCII objectForKey:sKey]);
}

//Enumerator 를 이용한 접근.
NSEnumerator *enmutor = [mapAlphaASCII objectEnumerator];
id oValue;
while (oValue = [enmutor nextObject])
{
    NSLog(@"Value[%@]", oValue);
}
< 위 코드는 XCode 11.2 Objective-C 에서 빌드 되었습니다 >

코드에서 염두하실것은 NSMutableDictionary 는 NSObject 를 상속받은 객체만을 멤버로 가질수 있습니다.

​일반적인 타입의 경우 멤버로 추가될수 없기 때문에 NSInteger 의 경우도 NSNumber 객체로 변환하여 멤버로 추가 되었습니다.

멤버를 접근 하는 방법은 Key 고속접근/Enumerator 를 이용하는 방법으로 구현 하였습니다.

NSMutableDictionary 관련 상세한 인터페이스는 https://developer.apple.com/documentation/foundation/nsmutabledictionary?language=objc 여기서 확인 하실수 있습니다.

​​제가 여기서 추가로 설명하고자 하는것은 제가 자주 사용하던 패턴과 사용함에 있어 필요로 생각하는 요소들만 정리해서 안내 해드리겠습니다.

a. setValue : NSMutableDictionary 에 멤버를 추가 해주는 메소드 입니다.
b. count : NSMutableDictionary 에 저장된 멤버에 대한 갯수를 리턴해주는 메소드 입니다.
c. removeAllObjects : NSMutableDictionary 에 저장된 멤버를 모두 지우는 메소드 입니다.
d. removeObjectForKey : NSMutableDictionary 에 저장된 멤버중 하나를 지우는 메소드 입니다.
e. objectForKey : 특정 키에 해당하는 값을 리턴합니다.

위 설명된 항목들을 활용한 샘플 코드를 만들어 보겠습니다.


NSMutableDictionary *mapAlphaASCII = [[NSMutableDictionary alloc] init];
    
//값 할당.
for (NSInteger i = 65; i <= 90; i++)
{
    NSString *sKey;
    sKey = [NSString stringWithFormat:@"%c", (int)i];
    
    [mapAlphaASCII setValue:[NSNumber numberWithInteger:i] forKey:sKey];
}

NSLog(@"mapAlphaASCII Member Count %ld", [mapAlphaASCII count]);

//Key를 이용한 접근.
for (NSString *sKey in mapAlphaASCII)
{
    NSLog(@"Key[%@]=Value[%@]", sKey, [mapAlphaASCII objectForKey:sKey]);
}

// B 값을 찾아 삭제.
if([mapAlphaASCII objectForKey:@"B"] != nil)
{
    [mapAlphaASCII removeObjectForKey:@"B"];
}
else
    NSLog(@"Not Found B");

NSLog(@"mapAlphaASCII Member Count %ld", [mapAlphaASCII count]);

//전체 멤버 삭제.
[mapAlphaASCII removeAllObjects];

NSLog(@"mapAlphaASCII Member Count %ld", [mapAlphaASCII count]);
NSMutableDictionary 의 기능은 제가 링크를 걸은 곳에서 더 많은 기능을 확인 하실수 있습니다.

댓글 없음: