NSTableView에 표시하려고하는 데이터는 특정 로컬 디렉토리에있는 파일 목록입니다.NSArrayController는 NSTableView에서 올바른 행 수를 표시하지만 실제 데이터는 표시하지 않습니다.
코드에서 나는 A
디렉토리에 액세스하고 파일을 반복하며 각 파일에 대한 세부 정보를 포함하는 NSMutableDictionary를 addObject:
을 통해 NSMutableArray에 추가하고 해당 배열을 반환합니다. 이러한 세부 정보는 인스턴스 변수 또는 모델의 속성이 아니며 각각은 런타임에 값이 결정되는 NSString입니다.
별도의 메서드 B
은 A
메서드를 호출하고 반환 된 배열을 반복하며 각 항목을 addObject:
을 통해 NSArrayController에 추가합니다.
내 .xib 파일에는 NSMutableArray 인스턴스 변수에 바인딩 된 NSArrayController가 있습니다.이 코드에서 특정 로컬 디렉터리의 파일에 대한 모든 정보가 저장됩니다.
또한 NSTableView의 각 테이블 열 값을 NSArrayController의 관련 모델 키 경로에 바인딩했습니다.
응용 프로그램을 실행하면 NSTableView의 행 수 (해당 로컬 디렉토리의 올바른 파일 수)가 올바르게 표시됩니다. 그러나 각 테이블 열에 표시되는 텍스트 (모든 개별 표 셀에서 모두)는 단지 "표보기 셀"입니다.
NSLog를 사용하여 객체를 NSArrayController에 추가하면 바인딩 된 NSMutableArray 인스턴스 변수도 업데이트된다는 것을 확인했습니다. 또한 무작위로 인스턴스 변수에 저장된 객체를보고 각 테이블 열의 바인딩에 지정된 것과 동일한 모델 키 경로를 통해 해당 파일의 세부 정보에 액세스 할 수 있습니다. NSTableView는 해당 정보를 표시하지 않습니다.
이 문제의 원인에 대한 단서가 있습니까?
편집 : 나는 또한 reloadData
을 통해 직접 NSTableView를 새로 고치려고 시도했지만 성공하지 못했습니다.
관련된 경우 NSArrayController에 연결된 NSMutableArray 인스턴스 변수는 NSArrayController에 의해서만 채워집니다. 즉, 코드에서 해당 배열에 객체를 직접 추가하지 않습니다.
몇 시간 동안 이것을 디버깅하려고 노력했습니다 .... 당신은 생명의 은인입니다. –