2013-05-26 4 views
0

내 코드입니다가 [__NSArrayM objectAtIndex이 :] : 범위를 넘는 인덱스 1 [0 .. 0] 다음은

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

     cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 
    } 

    if (indexPath.row >= [CatArray count]) 
    { 
     return nil; 
    } 

    if(searching) 
    { 
     cell.textLabel.text=[ListOfArray objectAtIndex:indexPath.row]; 
    } 

    else 
    { 
      NSString *cellv=[CatArray objectAtIndex:indexPath.row]; 
      cell.textLabel.text=cellv; 
    } 
    return cell; 
} 

내가 색인 그것은 잘 작동 0에서 개체를 클릭 만하면 인덱스 1을 클릭하고 내 프로그램 표시 위의 [__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0] 오류. 이 오류를 수정하는 방법을 찾을 수 없습니다.

도와주세요.

+1

당신이 당신에 기록 된 것을 보여주십시오 'didSelectRowAtIndexPath ...' –

+2

당신의 CatArray 인덱스에 하나의 개체있다 - 0 점검 indexpath.row = 1 음역 0 인덱스 1 개체가있다. .0 또는 didSelectRowAtIndexPath를 사용하면 atIndex 객체가없는 다른 Array로 작업 할 수 있습니다. 1 – Nazir

+0

@zaph, 두 개의 배열이 있음을 알 수 있습니다. 범위 중 하나에서 경계가 검사되지만 검색중인 객체에서는 경계가 검사되지 않습니다. 디버그를 시도하는 경우 –

답변

0

오류 메시지는 분명해야합니다. 배열의 범위를 벗어나는 인덱스의 개체를 찾고 있습니다. 여기

메시지 : 경계를 넘어 인덱스 1 0 ... 0]는 인덱스 1에서 객체를 찾는 것을 의미하지만, 어레이 자체 만 배열 인덱스 0에서 시작하는 0으로 0 내지 인덱스의 개체가 .

시도는 당신이 처음에 할 개체가 있는지 여부를 귀하의 CatArray 또는 ListOfArray을 확인합니다. 또한 테이블 뷰 데이터 소스 numberOfRowsInSection의 반환 값을 계산하는 방법을 확인하십시오.

3

CatArray 수가 확인되는 동안 ListOfArray 수가 아닙니다.

중단시 예외를 켜고 예외의 원인이되는 행을 찾으십시오. 테이블 뷰는 지정된 행 를 사용할 수있는 UITableViewCell 상속

목적은 : enter image description here

또한 무 복귀하면 문서에서 에러로되어 있습니다. 당신이 nil을 반환한다면 어설 션이 발생합니다. - 당신은 당신의 코드를 다시 생각해야

1

팁 오프 여기 cellForRowAtIndexPath 방법에 나타납니다 : 코드가 제대로 numberOfRowsInSection에 응답하면

if (indexPath.row >= [CatArray count]) 
{ 
    return nil; 
} 

가 그 조건이 적절한 배열의 카운트 발생하지 않습니다 .

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return (searching)? [ListOfArray count] : [CatArray count]; 
} 
+1

추가적으로'tableView : cellForRowAtIndexPath :'로부터 nil이 리턴되면 tableView는 어서션을 발생시킵니다. –

관련 문제