2012-02-29 38 views
0

我的應用程序總是彈出'變異方法發送給不可變對象' 我的字典和數組已經聲明是可變的,但似乎沒有幫助 我有嘗試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

回答

0

如果右側沒有返回一個NSMutableArray(NSArray的替代)嘗試在可變對象發生變異的。

NSMutableArray * Array1 = [dictionary objectForKey:@「Array1」]; // NSArray的

1

嘗試:

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

相關問題