NSMutableDictionaryをNSUserDefaultsで保存・取り出し

ここを参照して単純な例を作ってみました。ほとんどそのままです。

NSMutableDictionaryはNSUserDefaultsで保存するとimmutableになってしまうので、取り出すときmutableCopyを使ってmutalbeに戻してやればいいようです。

// 辞書を適当に作る
NSMutableDictionary *mDict1 = [@{@"key1":@1, @"key2":@2} mutableCopy];

// 保存
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:mDict1 forKey:@"Dic"];

// 読み込みんでmutableにする
NSDictionary *dict = [defaults objectForKey:@"Dic"];
NSMutableDictionary *mDict2 = [dict mutableCopy];

// 値を足してみる
mDict2[@"key3"] = @3;
mDict2[@"key4"] = @4;

for (NSString *key in [mDict2 allKeys]) {
    NSLog(@"key:%@, value:%@", key, [mDict2 objectForKey:key]);
}

コメント