Objective-C の辞書(NSDictionaryとNSMutableDictionary)基本概念とよく利用方法
1.不変辞書-NSDictionary
1.1 初期化操作
NSDictionary *dict1=[NSDictionary dictionaryWithObject:numObj1 forKey:@"key1″];
NSLog(@"%@",dict1); //複数の要素を初期化
NSDictionary *dict2=[NSDictionary dictionaryWithObjectsAndKeys:numObj1, @"key1″,numObj2,@"key2″, nil];
NSLog(@"%@",dict2);
1.2 辞書の数を取得
NSInteger count=[dict2 count];
NSLog(@"%ld",count);
1.3 keyにょって相応するvalueオブジェクトを取得
NSString *value=[dict2 objectForKey:@"key1″];
NSLog(@"%@",value);
1.4 辞書のキーから列挙オブジェクトに変換して遍歴に用いる
NSEnumerator *enumerator=[dict2 keyEnumerator];
1.5 すべてのkey集合を取得
NSArray *keys= [dict2 allKeys];
NSLog(@"%@",keys);
1.6 すべてのvalue集合を取得
NSArray *values=[dict2 allValues];
NSLog(@"%@",values);
2.NSDictionaryを継承する可変辞書NSMutableDictionary
2.1 辞書の初期化
NSMutableDictionary *mutableDic=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"v1″,@"k1″,@"v2″,@"k2″,@"v3″,@"k3″,@"v4″,@"k4″,@"v5″,@"k5″, nil];
2.2 辞書に指定辞典を追加
NSDictionary *dict4=[NSDictionary dictionaryWithObject:@"v6″ forKey:@"k6″];
[mutableDic addEntriesFromDictionary:dict4];
NSLog(@"%@",mutableDic);
2.3 辞書にvalueとkeyを追加
[mutableDic setValue:@"object" forKey:@"key"];
2.4 空の辞書を作成し、新しい辞書を設定
NSMutableDictionary *mutableDict2=[NSMutableDictionary dictionary];
[mutableDict2 setDictionary:mutableDic];
NSLog(@"%@",mutableDict2);
2.5 指定されたkeyのvalue値を削除
[mutableDict2 removeObjectForKey:@"k4″];
2.6 指定されたkey集合のvalue値を削除
NSArray *arrayKeys=[NSArray arrayWithObjects:@"k1″,@"k2″,@"k3″, nil];
[mutableDict2 removeObjectsForKeys:arrayKeys];
NSLog(@"%@",mutableDict2);
2.7 辞書のすべてのvalueを削除
[mutableDict2 removeAllObjects];
NSLog(@"%@",mutableDict2);
3.列挙遍歴
3.1 一般遍歴
NSArray *allKeys=[mutableDic allKeys];
for (NSInteger i=0; i<[allKeys count]; i++) {
NSString *obj=[mutableDic objectForKey:[allKeys objectAtIndex:i]];
NSLog(@"%@",obj);
3.2 快速遍歴
for (id key in mutableDic) {
NSString *object=[mutableDic objectForKey:key];
NSLog(@"%@",object); }
3.3 イテレータ列挙
NSEnumerator *enumerator1= [mutableDic keyEnumerator];
id key=[enumerator1 nextObject];
while (key) {
id object=[mutableDic objectForKey:key];
NSLog(@"%@",object);