2011-10-13 8 views
6
-(id)init{ 
    if (self==[super init]) {    
     NSMutableArray *listname = [[NSMutableArray alloc]initWithObjects:@"cu",@"al",@"zn",@"au",@"ru",@"fu",@"rb",@"pb",@"wr", nil];    
     NSMutableArray *listVolumn = [NSMutableArray arrayWithCapacity:[listname count]];   
     for (int i=0; i<[listname count]; i++) { 
      [listVolumn addObject:[NSNumber numberWithLong:0]]; 
     } 
     nsmutabledictionary = [[NSDictionary alloc] initWithObjects:listVolumn forKeys:listname]; 
    } 
    return self; 
} 

en mi método init, que definen dos NSMutableArray, y se añade a NSMutableDictionary NSMutableDictionary. en mi otro método:[__NSCFDictionary setObject: forKey:]: método mutando enviados a objeto inmutable

[nsmutabledictionary setObject:[NSNumber numberWithLong:100] forKey:@"cu"]; 

pero choque en línea anterior: enter image description here

Respuesta

16
nsmutabledictionary = [[NSDictionary alloc] initWithObjects:listVolumn forKeys:listname]; 

debería ser

nsmutabledictionary = [[NSMutableDictionary alloc] initWithObjects:listVolumn forKeys:listname]; 
+0

gracias, tienes razón – Gaojian922188

2

En su código veo que nsmutabledictionary = [[NSDictionary alloc] initWithObjects:listVolumn forKeys:listname]; que la línea declarada es NSDictionary mientras usted lo intentó como NSMutableDictionary

+0

muchas gracias, tienes razón. – Gaojian922188

Cuestiones relacionadas