2011-10-13 7 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; 
} 

私のinitメソッドでは、2つのNSMutableArrayを定義し、NSMutableDictionary nsmutabledictionaryに追加しました。[__NSCFDictionary setObject:forKey:]:変更メソッドが不変オブジェクトに送信

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

が、それは上記の行でクラッシュ: enter image description here

答えて

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

は、私はあなたが宣言した行そのnsmutabledictionary = [[NSDictionary alloc] initWithObjects:listVolumn forKeys:listname]; を参照してください、あなたのコードで

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

ありがとう、ありがとうございます。 – Gaojian922188

2

する必要があります私の他の方法で それはあなたがそれがNSMutableDictionaryであることを意図している間にNSDictionaryになります

+0

ありがとうございます、あなたは正しいです。 – Gaojian922188

関連する問題