当使用可变数组函数时发送给不可变对象的变异方法错误

问题描述:

我的应用程序总是弹出'变异方法发送给不可变对象' 我的字典和数组已经声明是可变的,但似乎没有帮助 我有尝试replaceObjectAtIndex函数它也没有工作。当使用可变数组函数时发送给不可变对象的变异方法错误

NSString* plistpath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"]; 
NSMutableDictionary* dictionary = [NSMutableDictionary dictionaryWithContentsOfFile:plistpath]; 
NSMutableArray* Array1 = [dictionary objectForKey:@"Array1"]; 
[Array1 removeObjectAtIndex:num]; 
[Array1 insertObject:@"1" atIndex:num]; 
return Array1; 

感谢

+0

怎么你加'Array1'到'dictionary'以及如何你以前创建添加它? – sch 2012-02-29 16:03:18

如果右侧没有返回一个NSMutableArray(NSArray的替代)尝试在可变对象发生变异的。

NSMutableArray * Array1 = [dictionary objectForKey:@“Array1”]; // NSArray的

尝试:

NSArray *array = [dictionary objectForKey:@"Array1"]; // Immutable 
NSMutableArray * Array1 = [NSMutableArray arrayWithArray:array]; // Mutable 
// ... 

或者像朱利安指出:

NSArray *array = [dictionary objectForKey:@"Array1"]; // Immutable 
NSMutableArray * Array1 = [array mutableCopy]; // Mutable 
+0

你也可以使用mutableCopy方法(例如:[[dictionary objectForKey:@“Array1”] mutableCopy];) – Julien 2012-02-29 16:54:02