2012-01-10 37 views
-6

dataArrayに新しいオブジェクトを追加しようとするとエラーが発生します。これは私がdataArrayを定義する方法です。オブジェクトにはエラーがありません

-(NSMutableArray *)dataArray{ 
    if (!_dataArray){ 
     _dataArray = [[NSMutableArray alloc] initWithObjects: 
         [NSMutableArray arrayWithObjects: 
         [NSMutableArray array], 
         [NSMutableArray array], 
         [NSMutableArray array], 
         nil], 
         [NSMutableArray arrayWithObjects: 
         [NSMutableArray array], 
         [NSMutableArray array], 
         [NSMutableArray array], 
         nil], 
         nil]; 
    } 
    return _dataArray; 
} 

私はdataArrayにオブジェクトを追加しようとする場所です:*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

は、なぜ私はこのエラーを取得していますし、私はどのように修正することができます。ここでは

[[[self.dataArray objectAtIndex:0] objectAtIndex:0] addObject:[NSString stringWithFormat:@"%@ %@",[attributeDict objectForKey:@"material"], [attributeDict objectForKey:@"tool"]]]; 
[[[self.dataArray objectAtIndex:0] objectAtIndex:1] addObject:[attributeDict objectForKey:@"level"]]; 
[[[self.dataArray objectAtIndex:0] objectAtIndex:2] addObject:[attributeDict objectForKey:@"probability"]]; 

は、私が取得していますエラーですそれ?

+0

あなたは 'attributeDict'に関する情報を提供する必要があります。私の推測では、 '[attributeDict objectForKey:]' callのどれかがnilを返すのでしょうか? – barley

+0

3つのオブジェクトを1つずつ追加します。どのステートメントがエラーの原因ですか? [self.dataArray objectAtIndex:0]は何を返しますか? –

答えて

-1

私はそれを修正しました。私は変数名のスペルミスを犯しました。

4

addObject:へのあなたの議論は、おそらくnilです。

テストそれ:あなたが挿入しようとしている値の

assert(attributeDict); 
assert([attributeDict objectForKey:@"level"]); 
assert([attributeDict objectForKey:@"probability"]); 
+0

でも、addObjectを文字列に設定しても、同じエラーが発生します。 – blake305

+1

@blake305: 'addObject:'のすべてのオカレンスに定数文字列を渡しても、エラーが出るのですか? – Chuck

0

一つはattributeDictは「レベル」または「確率」キーのいずれかを含んでいないことを意味する、バックnil来ています。 nil引数を指定しても、文字列はnilではありません。(nil)と表示されます。

+0

addObjectを文字列に設定しても、同じエラーが返される – blake305

+0

そのような場合は、文字列を出力しようとする前に文字列の割り当てが解除されている必要があります。私はそれが起こっていることを疑う。 – darvids0n

関連する問題