2012-12-12 4 views
1

Objective-C에서 null/nil 배열을 초기화해야합니다 (사용할 배열이 확실하지 않음).빈 배열 초기화

NSMutableArray * ObjectIndex = [[NSMutableArray alloc] initWithCapacity:maxObjectId]; 

    for (int i = 0; i < maxObjectId; i++) 
    { 
     [ObjectIndex setObject:nil atIndexedSubscript:i]; 
    } 

내가 전무 할 수없는 개체를 나타내는 오류를 받고 있어요 :

나는이 코드를 가지고있다.

나는 나중에 코드에서 (? 널)

전무 다른 사람을 떠나, 특정 인덱스에서의 객체를 저장하기 위해이 배열을 사용하여 계획 :

NSNull가 무엇인지입니다
for (Object * obj in objs) 
{ 
    ObjectIndex[obj.ID] = obj; 
} 
+0

[ObjectIndex setObject : @ ""atIndexedSubscript : i]; ??? –

답변

3

. 문서에서 :

NSNull 클래스는 컬렉션 개체 (null 값을 허용하지 않음)의 null 값을 나타내는 데 사용되는 단일 개체를 정의합니다.

그래서 당신은 [NSNull null] 대신 nil로 배열을 채울 수 : [NSNull null]는 싱글 톤 객체가

for (int i = 0; i < maxObjectId; i++) 
{ 
    ObjectIndex[i] = [NSNull null]; 
} 

때문에, 당신은

if ([ObjectIndex[i] isEqual:[NSNull null]]) { 
    // "empty" 
} 

주와 배열 항목을 확인할 수 있습니다를 Objective-C 인스턴스 변수의 이름은 대개 소문자로 시작하므로 objectIndex이 더 좋을 것입니다. 이름.

1

스파 스 배열을 사용하는 대신 NSMutableDictionary를 키로 사용하는 이유는 무엇입니까? 그렇게하면 널 (null)로 사전 채우기에 대해 걱정할 필요가 없습니다.

또는 당신이 정말로 배열을 사용하려면, 나도 addObject로 초기화 좋을 것 : 또는은 insertObject : atIndex : 간단한

0

을! 이 방법으로 할 수 있습니다.

NSMutableArray * ObjectIndex = [[NSMutableArray alloc] initWithCapacity: maxObjectId]; 
for(int i=0 ; i< maxObjectId ; i++) { 
    [ObjectIndex addObject:[NSNull null]]; 
}