NSMutableDictionaryとは
NSMutableDictionaryはNSMutableArray同様にオブジェクトの集合を格納するものですが、NSMutableArrayとは管理の方法が違います。 NSMutableArrayはそれぞれのオブジェクトに順番に番号をつけて管理しますが、こちらはキーと呼ばれる名前をそれぞれのオブジェクトに結びつけた状態で管理します。 キーはNSStringです。オブジェクト全体で一つのものに付随する情報を格納するというような使われ方をします。 例えばある人物に関するデータとして、氏名、年齢、住所、電話番号…と色々な情報がありますが、これらを一つのNSMutableDictionaryに格納することで、 一つのデータ集合体として扱えます。仕組みを理解してしまえば自分でデータ用の構造体などを作るのよりも簡単です。 SQLiteのデータを格納する場合など、データの格納に更新のチェックなどデータの出し入れに特殊な仕掛けが必要な場合でなければ有用なオブジェクトでしょう。 NSDictionaryとは異なり可変長ですから、作成後にデータを自由に追加および削除できます。NSDictionaryにあるメソッドは全て使えます。
代表的なメソッド(目的別)
キーを指定してオブジェクトを格納したい - setObject:forKey:
中にあるオブジェクトを全て削除したい - removeAllObjects
中にあるオブジェクトをキーを指定して削除したい - removeObjectForKey:
キーを指定してオブジェクトを格納したい - setObject:forKey:
- (void)setObject:(id)anObject forKey:(id)aKey
オブジェクトを指定したキーを使って格納します。もともと同じキーで格納されているオブジェクトがあった場合には、新しいオブジェクトで上書きされます。 下の例ではmemoというキーでabcという文字列(NSStringオブジェクト)が、suujiというキーで1(NSNumberオブジェクトに入っています)が格納されます。
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];
[myDictionary setObject:@"abc" forKey:@"memo"];
[myDictionary setObject:[NSNumber numberWithInt:1] forKey:@"suuji"];
中にあるオブジェクトを全て削除したい - removeAllObjects
- (void)removeAllObjects
NSMutableDictionaryに格納されている全てのオブジェクトが削除されます。下の例ではmemo、suujiの両方のキーで格納されたオブジェクトが削除されます。
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];
[myDictionary setObject:@"abc" forKey:@"memo"];
[myDictionary setObject:[NSNumber numberWithInt:1] forKey:@"suuji"];
[myDictionary removeAllObjects];
中にあるオブジェクトをキーを指定して削除したい - removeObjectForKey:
- (void)removeObjectForKey:(id)aKey
NSMutableDictionaryに格納されている全てのオブジェクトのうち、指定したキーで格納されているオブジェクトが削除されます。 下の例の場合にはsuujiというキーで格納したNSNumberオブジェクトがmyDictionaryから削除されますが、 memoというキーで格納したNSStringオブジェクトはそのまま残ります。
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];
[myDictionary setObject:@"abc" forKey:@"memo"];
[myDictionary setObject:[NSNumber numberWithInt:1] forKey:@"suuji"];
[myDictionary removeObjectForKey:@"suuji"];