Dictionary
키와 인스턴스로 이루어진 데이터의
모임입니다
키로 인스턴스를 찾을 수 있습니다.<?xml:namespace prefix = o
/>
키는 유일해야 하며
일반적으로 NSString 입니다.
키와 연결된 인스턴스는 데이터 유형에
관계가 없지만 nil은 안됩니다.
1.
NSDictionary
NSDictionary는 수정이 불가능한 Dictionary입니다.
멤버 메서드
+(id)dictionary
비어있는 dictionary 생성
+(id)dictionaryWithObject:(id)anObject
forKey:(id)aKey
aKey를 key로 해서 anObject를 내용으로 갖는 인스턴스를
갖는 dictionary 생성
-(id)initWithObjects:(NSArray *)Objects forKeys:(NSArray
*)Keys
Keys를 키 값으로 해서 Objects를 내용으로 초기화
-(id)initWithObjects:(id *)Objects forKeys:(id *)Keys
count:(NSUInteger)count
Keys를 키 값으로 해서 Objects를 내용으로 count 개수 만큼 초기화
-(id)initWithObjectsAndKeys:(id)Object,(id)Key,…
nil
Object와 Key로 초기화
-(NSUInteger)count
개수 리턴
-(id)objectForKey:(id)aKey
aKey에 해당하는 인스턴스 리턴
-(NSArray
*)allKeys
모든 키값을 배열로 리턴
-(NSArray
*)allValues
모든 키를 포함하는 배열을
리턴
-(NSEnumerator *)keyEnumerator
키 값을 열거자로 리턴
-(NSEnumerator *)objectEnumerator
키 값을 열거자로 리턴
-(NSArray
*)allKeysForObject:(id)anObject
anObject를 갖는 모든 키를 배열로
리턴
NSDictionary *
greeting = [[NSDictionary alloc] initWithObjectsAndKeys:@"안녕하세요", @"아침인사", @"식사 하셨어요", @"오후인사", @"내일뵐께요",@"저녁인사",nil ];
NSLog(@"아침인사: %@", [greeting objectForKey:
@"아침인사"]);
NSLog(@"점심인사: %@", [greeting objectForKey:
@"오후인사"]);
NSLog(@"저녁인사: %@", [greeting objectForKey:
@"저녁인사"]);
NSArray * keys = [greeting
allKeys];
NSArray * objects = [greeting
allValues];
int
i;
for(i=0; i<[greeting count];
i++)
{
NSLog(@"Key:%@ Value:%@", [keys objectAtIndex:i],
[objects objectAtIndex:i]);
}
NSDictionary * greeting1 = [[NSDictionary alloc]
initWithObjects:objects forKeys:keys];
NSEnumerator *it;
it =
[greeting1 keyEnumerator];
id
var;
for(i=0; i<[greeting count];
i++)
{
var = [it nextObject];
NSLog(@"Key:%@ Value:%@", var, [greeting
objectForKey: var]);
}
=========================================================================================
2.
NSMutableDictionary
NSMutableDictionary는 수정이
가능한 Dictionary입니다.
아래와 같은 메서드가 추가됩니다.
+(id)
dictionaryWithCapacity:size
size 크기만큼으로 메모리 할당
-(id)initWithCapacity:size
size 크기만큼으로 초기화
-(void)setObject:(id)anObject forKey:(id)aKey
aKey를 Key로 anObject를 추가합니다.
둘 다 nil이면
안되고 aKey가 존재한다면 내용은 대체됩니다.
-(void)removeAllObjects
모든 엔트리 삭제
-(void)removeObjectForKey:key
key에 해당하는 인스턴스 삭제
-(NSArray
*)keysSortedByValueUsingSelector:@selector(비교메서드:)
이 경우 내용에 따라서 정렬한 후 key를 배열로 리턴합니다.
NSMutableDictionary
*greeting = [NSMutableDictionary dictionary];
[greeting setObject:@"안녕하세요" forKey: @"아침인사"];
[greeting setObject:@"식사 하셨어요" forKey:@"오후인사"];
[greeting setObject:@"내일뵐께요" forKey:@"저녁인사"];
[greeting setObject:@"잘자요" forKey:@"밤인사"];
[greeting setObject:@"밤새 별일 없으셨어요" forKey:
@"아침인사"];
NSArray * keys = [greeting
allKeys];
int
i;
for(i=0; i<[greeting count];
i++)
{
NSLog(@"Key:%@ Value:%@", [keys objectAtIndex:i],
[greeting objectForKey:[keys objectAtIndex:i]]);
}
[greeting removeObjectForKey:@"밤인사"];
keys
= [greeting allKeys];
NSLog(@"삭제한
후 -------------");
for(i=0; i<[greeting count];
i++)
{
NSLog(@"Key:%@ Value:%@", [keys objectAtIndex:i],
[greeting objectForKey:[keys objectAtIndex:i]]);
}
keys
= [greeting
keysSortedByValueUsingSelector:@selector(compare:)];
NSLog(@"내용으로
정렬 한 후 ----");
for(i=0; i<[greeting count];
i++)
{
NSLog(@"Key:%@ Value:%@", [keys
objectAtIndex:i], [greeting objectForKey:[keys
objectAtIndex:i]]);
}