使用可变数组函数时,mutating方法发送到不可变对象错误

时间:2012-02-29 15:49:41

标签: objective-c nsmutablearray plist nsmutabledictionary

我的应用程序总是弹出'变异方法发送到不可变对象' 我的字典和数组已经宣布是一个可变的,但似乎没有帮助 我试过了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;

感谢

2 个答案:

答案 0 :(得分:1)

尝试:

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

或者朱利安指出:

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

答案 1 :(得分:0)

如果右侧没有返回NSMutableArray(而不是NSArray),则尝试改变一个可变对象。

  
    

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