은 시간을내어 저를 용서하십시오,하지만 난 많은 시간을 소비하고 내 마음에 있던 모든 노력을하고 난 인터넷에서 발견 :/NSTableView는 reloadData는 - 경계 예외 넘어 지수는
문제는 다시로드에 관한 것입니다 NSTableView 배열에 레코드를 하나 추가 한 후. 내 응용 프로그램은 NSDictionaries의 NSMuttableArray에 파일 이름을 검색하고 수정 한 날짜를 추가하는 것으로 시작합니다. 그런 다음이 정보를 NSTableView에로드하면 모든 것이 잘 동작합니다. 그러나 I'am 새로운 파일을 생성하고 NStableViev I'am이 점점 다시로드 할 때 :
[__NSArrayM objectAtIndex:]: index 5 beyond bounds [0 .. 4]
지금 내가 I'am이 일을하려고 무엇의 일부 코드를 보여주고 싶어요. 그래서 여기
은 얼마나 내 테이블 점점 데이터
여기-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{
NSLog(@"--------->%ld",(long)filesCount);
return filesCount;
}
-(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn
row:(NSInteger)row {
NSDictionary *flag = FilesArray[row];
NSString *identifier = [tableColumn identifier];
if ([identifier isEqualToString:@"filename"]){
NSTableCellView *cellview = [tableView makeViewWithIdentifier:@"filename" owner:self];
[cellview.textField setStringValue:flag[@"name"]];
return cellview;
}else if ([identifier isEqualToString:@"filedate"]){
NSTableCellView *cellview = [tableView makeViewWithIdentifier:@"filedate" owner:self];
[cellview.textField setStringValue:flag[@"date"]];
return cellview;
}
return nil;
}
어떤 방법 새 파일을 만들 때 데이터를 다시로드하려고 i'am :
if([identifier isEqualToString:@"newFileModalDone"]){
NSString *newFileName = [self fileNameModalDone];
//creating new file
[TxtFileObj WriteToFile:[newFileName stringByAppendingString:@".txt"] :nil];
//rescaning directory
[TxtFileObj GetFilesList];
FilesArray = [TxtFileObj GetFileArray];
//updating files count
filesCount = [FilesArray count];
[FilesListTable reloadData];
}
나는 많은 디버거를 볼려고 시간과 그것은 예외처럼 보인다.
NSDictionary *flag = FilesArray[row];
그래서 나는 잘못된 배열 크기에 대해 생각하고 있었다. 새로운 영화를 만들지 만 여러 번 확인했는데 모든 것이 잘되었습니다.
내가 뭘 잘못했는지 찾아내는 데 도움이된다면, 미안, 문제가 분명하다면 나는 목표 C와 코코아에 대해 매우 익숙하다.
도움 주셔서 감사합니다.
코드를 이해할 수 없습니다. '[TxtFileObj GetFilesList];'클래스 메소드입니까? 그것은 전혀 옳지 않습니다. – trojanfoe
실제 코드도 게시하십시오. 'return cell view;는 컴파일되지 않습니다. – trojanfoe
@trojanfoe 내 문제를보기 위해,'[TxtFileObj GetFilesList];'는 인스턴스 메소드입니다. 이것은 실제 코드이며 컴파일이 잘되어 있습니다. – MartyMcFly