2012-01-10 2 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 :]'호출 중 하나가 nil을 리턴하고 있는가? – barley

+0

3 개의 오브젝트를 한 번에 하나씩 추가합니다. 다음 중 오류의 원인은 무엇입니까? [self.dataArray objectAtIndex : 0]은 무엇을 반환합니까? –

답변

-1

해결했습니다. 변수 이름의 철자가 잘못되었습니다.

4

addObject:에 대한 귀하의 주장은 nil 일 가능성이 큽니다.

테스트를 : 당신이 다시 attributeDict는 "수준"또는 "확률"키 중 하나를 포함하지 않는 것을 의미 nil을오고 삽입하려는 값의

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

문자열에 addObject를 설정해도 동일한 오류가 발생합니다. – blake305

+1

@ blake305 : 모든 addObject 발생에 상수 문자열이 전달되고 여전히 오류가 발생하고 있습니까? – Chuck

0

하나. nil 인수가 제공 되더라도 문자열은 nil이 아니어야합니다. 단지 (nil)으로 표시됩니다.

+0

문자열에 addObject를 설정해도 같은 오류가 발생합니다. – blake305

+0

그럴 경우 해당 문자열을 인쇄하기 전에 할당을 해제해야합니다. 그게 무슨 일이 일어날 지 의심 스럽네. – darvids0n

관련 문제