2009-12-05 12 views
2

NSMutableArray에 부울을 쉽게 추가 할 수 있어야합니다.nil을 삽입하려고 시도했습니다.

toDoArray가 NSMutableArray로 초기화된다고 가정합니다. 다음 :

BOOL checkBoxState = NO; 
[toDoArray addObject:checkBoxState]; 

"nil 삽입 시도"오류를 생성합니다.

가변 배열에 부정 부울을 추가하는 올바른 방법은 무엇입니까?

답변

5

NSMutable 어레이는 ID, ID가 어떤 목적 목표 C.의 이상 부분을 필요로하지만, 원시적 (NSArray들 개체 예를 들어, int들, 프리미티브이며, 신전, id들).

This question 도움이 될 수 있습니다.

+3

아무것도. Objective-C에는 고정 루트 클래스가 없으므로 'id'는 모든 클래스의 인스턴스에 대한 참조로 존재합니다. – bbum

+1

그게 이상하다고 생각하는 게 맞을 것 같아. –

6

다른 사람들이 말했듯이 NSMutableArray에는 Objective-C 개체 만 포함될 수 있습니다. 서브 클래스가 NSObject 일 필요는 없지만 가장 일반적인 것입니다. 혹시 attempt to insert nil. 런타임 오류를보기 전에

그러나, 긴, 당신은 컴파일러 경고 봤어야 :

warning: passing argument 1 of 'addObject:' makes pointer from integer without a cast 

그것은 [막연한 및 로터리 방식]는 문제가 정확히 무엇을 말을; 당신은 객체에 대한 포인터가 아닌 배열에 뭔가를 집어 넣으려고합니다.

경고에주의하고 수정하십시오. 대부분의 경우, 경고가 나타나면 런타임 오류 또는 충돌을 나타냅니다.

0

컬렉션 객체 (NSArray, NSDictionary 등)에 배치하기 전에 기본 유형 (BOOL, int, NSInterger 등)을 래핑하려면 NSNumber를 사용해야합니다. 배열에

추가 BOOL : 배열에서

BOOL checkBoxState = NO; 
NSNumber* n = [NSNumber numberWithBool:checkBoxState]; 
[toDoArray addObject:n]; 

가져 오기 BOOL : id``에 대한 이상한

NSNumber* n = [toDoArray objectAtIndex:0]; 
BOOL checkBoxState = [n boolValue]; 
관련 문제