2012-01-10 25 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

[[[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"]]; 

這裏是我得到的錯誤:*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

爲什麼會出現這個錯誤,我該如何解決它?

+0

您需要提供關於'attributeDict'的信息。我的猜測是'[attributeDict objectForKey:]'調用中的一個返回nil? – barley 2012-01-10 00:58:27

+0

這添加3個對象,一次一個。哪個語句導致錯誤? [self.dataArray objectAtIndex:0]返回什麼? – 2012-01-10 01:21:22

回答

-1

我修好了。我拼錯了一個變量名。

4

您對addObject:的說法可能是nil

測試:

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

即使我將addObject設置爲一個字符串,它也會給我提供相同的錯誤 – blake305 2012-01-10 01:14:08

+1

@ blake305:您的意思是您將一個常量字符串傳遞給* addObject的每個*出現:並仍然出現錯誤? – Chuck 2012-01-10 01:16:13

0

一個你想插入是回來nil,這意味着attributeDict不包含一個「級別」或「概率」鍵的值。該字符串不應該是nil,即使它提供了nil參數,它們只會顯示爲(nil)

+0

即使當我將addObject設置爲字符串時,它也會給我提供相同的錯誤 – blake305 2012-01-10 01:14:19

+0

如果是這樣的話,必須在嘗試打印出字符串之前取消分配字符串。我懷疑這是怎麼回事。 – darvids0n 2012-01-10 01:18:46

相關問題