NSMutableArray에 부울을 쉽게 추가 할 수 있어야합니다.nil을 삽입하려고 시도했습니다.
toDoArray가 NSMutableArray로 초기화된다고 가정합니다. 다음 :
BOOL checkBoxState = NO;
[toDoArray addObject:checkBoxState];
"nil 삽입 시도"오류를 생성합니다.
가변 배열에 부정 부울을 추가하는 올바른 방법은 무엇입니까?
NSMutableArray에 부울을 쉽게 추가 할 수 있어야합니다.nil을 삽입하려고 시도했습니다.
toDoArray가 NSMutableArray로 초기화된다고 가정합니다. 다음 :
BOOL checkBoxState = NO;
[toDoArray addObject:checkBoxState];
"nil 삽입 시도"오류를 생성합니다.
가변 배열에 부정 부울을 추가하는 올바른 방법은 무엇입니까?
NSMutable 어레이는 ID, ID가 어떤 목적 목표 C.의 이상 부분을 필요로하지만, 원시적 (NSArray
들 개체 예를 들어, int
들, 프리미티브이며, 신전, id
들).
This question 도움이 될 수 있습니다.
다른 사람들이 말했듯이 NSMutableArray
에는 Objective-C 개체 만 포함될 수 있습니다. 서브 클래스가 NSObject
일 필요는 없지만 가장 일반적인 것입니다. 혹시 attempt to insert nil.
런타임 오류를보기 전에
그러나, 긴, 당신은 컴파일러 경고 봤어야 :
이warning: passing argument 1 of 'addObject:' makes pointer from integer without a cast
그것은 [막연한 및 로터리 방식]는 문제가 정확히 무엇을 말을; 당신은 객체에 대한 포인터가 아닌 배열에 뭔가를 집어 넣으려고합니다.
경고에주의하고 수정하십시오. 대부분의 경우, 경고가 나타나면 런타임 오류 또는 충돌을 나타냅니다.
컬렉션 객체 (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];
아무것도. Objective-C에는 고정 루트 클래스가 없으므로 'id'는 모든 클래스의 인스턴스에 대한 참조로 존재합니다. – bbum
그게 이상하다고 생각하는 게 맞을 것 같아. –