NSUserDefaultsを使用して取り出した配列にデータを追加して保存する際、下記にエラーになりました。
[bash gutter=”0″]
*** Terminating app due to uncaught exception ‘NSInternalInconsistencyException’, reason: ‘-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object’
*** First throw call stack:
[/bash]
immutable(不変)なオブジェクトを書き換えようとしたようです。
NSUserDefaultsはimmutableなオブジェクトを返しますので、NSDictionaryやNSArrayなどオブジェクト集合に対して操作する場合はmutableCopyでインスタンスの可変コピーを取得するように書き換えます。
修正前。
[bash]
NSMutableArray *favList = [[NSUserDefaults standardUserDefaults] objectForKey:@"key"];
[favList addObject:@"object"];
[[NSUserDefaults standardUserDefaults] setObject:favList forKey:@"key"];
[[NSUserDefaults standardUserDefaults] synchronize];
[/bash]
修正後。
[bash highlight=”1″]
NSMutableArray *favList = [[[NSUserDefaults standardUserDefaults] objectForKey:@"key"] mutableCopy];
[favList addObject:@"object"];
[[NSUserDefaults standardUserDefaults] setObject:favList forKey:@"key"];
[[NSUserDefaults standardUserDefaults] synchronize];
[/bash]
これでOKです。