このエラーで立ち往生しています。
かなり基本的なエラー
2012-07-20 12:44:07.462 Picsilk[4286:17903] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
これは、コードのどこかでオブジェクトを NSMutableArray ではなく NSArray に挿入しようとしていることを意味します。
insertObject:atIndex:
ただし、アプリケーションではどこでもメソッドを使用しません。
真剣に、プロジェクト内のすべてのファイルで「挿入」を検索しましたが、何も見つかりませんでした。
ブレークポイントでいくつかの検索を行った後、 addObject を使用してオブジェクトに含まれるオブジェクトにオブジェクトNSMutableDictionary
を格納すると問題が発生するように見えることがわかりましたNSMutableArray
NSUserDefaults standardUserDefaults
NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
if(![userDef objectForKey:@"somekey"])
[userDef setObject:[[NSMutableArray alloc] init] forKey:@"somekey"];
NSMutableDictionary *data = [NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"somehtmlstring", @"someid", nil] forKeys:[NSArray arrayWithObjects:@"data",@"id", nil ]];
[[userDef objectForKey:@"somekey"] addObject:data ];
エラーはその最後の行で発生します。ただし、すべてが可変であることは確かです。このまま使わなくてNSUserDefaults
いいの?
また、これは明らかに私の実際のコードの骨抜きバージョンです。関連するすべてのものを含めたことは確かですが、必要に応じて実際のコード/目的を投稿できます。
ありがとう