有点卡在这个错误上。
非常基本的错误
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'
我知道这意味着在我的代码中某处我试图将一个对象插入到 NSArray 而不是 NSMutableArray 中。
但是,我没有insertObject:atIndex:
在我的应用程序中使用方法 -anywhere-。
说真的,我在项目中的所有文件中搜索了“插入”,但什么也没找到。
在使用断点进行一些搜索之后,我发现当我使用 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
吗?
此外,这显然是我实际代码的淡化版本。很确定我已经包含了所有相关的内容,但如果需要,我可以发布实际的代码/目的。
谢谢