Objective c 使用可变数组函数时发送到不可变对象的变异方法错误

Objective c 使用可变数组函数时发送到不可变对象的变异方法错误,objective-c,nsmutablearray,plist,nsmutabledictionary,Objective C,Nsmutablearray,Plist,Nsmutabledictionary,我的应用程序总是弹出“mutating method sent to immutable object” 我的字典和数组已经声明为可变的,但似乎没有帮助 我尝试了replaceObjectAtIndex函数,但它也不起作用 NSString* plistpath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"]; NSMutableDictionary* dictionary = [NSMutableDiction

我的应用程序总是弹出“mutating method sent to immutable object” 我的字典和数组已经声明为可变的,但似乎没有帮助 我尝试了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 *array = [dictionary objectForKey:@"Array1"]; // Immutable
NSMutableArray * Array1 = [array mutableCopy]; // Mutable

您是如何将
Array1
添加到
dictionary
的,以及在添加之前是如何创建的?您还可以使用mutableCopy方法(例如:[[dictionary objectForKey:@“Array1”]mutableCopy];)
NSArray *array = [dictionary objectForKey:@"Array1"]; // Immutable
NSMutableArray * Array1 = [array mutableCopy]; // Mutable