当使用可变数组函数时发送给不可变对象的变异方法错误
问题描述:
我的应用程序总是弹出'变异方法发送给不可变对象' 我的字典和数组已经声明是可变的,但似乎没有帮助 我有尝试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;
感谢
答
如果右侧没有返回一个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
怎么你加'Array1'到'dictionary'以及如何你以前创建添加它? – sch 2012-02-29 16:03:18