2009-11-27 4 views
2

에 액세스하십시오. objectAtIndex : x를 사용하여 nsmutableArray에 액세스하려고하면이 인덱스에 개체가 없는데도 내 앱이 항상 중단됩니다.NSMutableArray에 값이없는 인덱스

내 질문은 : 어떻게이 색인에 뭔가가 있다면, 응용 프로그램을 충돌하지 않고 확인할 수 있습니까?

내 질문에 대한 이해를 바랍니다. 감사합니다. Alex

답변

1

NSArray에는 "count"라는 메서드가 있습니다. 가변 배열의 카운트을 호출하면 배열의 요소 수를 알 수 있습니다.

5

확인하여 인덱스가 배열의 경계에있는 경우 범위는 : 당신이 배열의 경계 내에있는 경우, 당신은 항상 0 [array count] 사이의 특정 인덱스에 객체를해야합니다

if (index >=0 && index < [myArray count]) 
    ... 
+0

안녕하세요, 빠른 답장을 보내 주셔서 감사합니다. 나는 메서드의 수를 알고 있지만 배열에 인덱스에 있는지 확인하는 또 다른 해결책이 있는지 알고 싶었다.), Alex – Alexander

1

, 배열 간격을 가질 수 없습니다로 값이 nil입니다.

+3

objectAtIndex에서 nil 값을 절대 가져서는 안된다. NSArray의 모든 요소는 non-nil이되어야한다. –

+0

@ 마크 - 지적 해 주셔서 고맙습니다. – luvieere

0

우리가 간격으로 개체를 반복 (Iteration) MutableArray 개체 에서 객체의 수를 반환 라는 미리 정의 된 방법 및 다음 다른 방법 objectAtIndex를 사용하고, 여기에이

for(i=0; i< [myMutableArrayObject count]; i++) { 
NSLog(@"%@",[[myMutableArrayObject objectAtIndex: i] myMethodDefined]); 
} 

시도 0부터 (count - 1)까지. 당신이 될 것입니다 카운트 범위를 확인 objectAtIndex:를 사용하려고 할 때 배열의 범위 내에있어 확인하거나 예외를 잡으려고 count 방법을 사용

감사합니다, 수밋

1

두 가지 옵션이 있습니다 예외를 잡는 것보다 훨씬 낮은 오버 헤드.

모르겠다면 NSArray에 "구멍"이 없습니다. 인덱스 0부터 배열 끝까지의 객체 ([array count]-1) 모두 액세스 가능합니다.

관련 문제