NSMutableArray (arrayOfFiles)에 바인딩하는 NSTreeController에 의해 제어되는 내용을 보여주는 NSOutlineView가 있습니다. 이 배열은 NSTreeNode 객체를 포함하는데, 여기서 representObject (File 객체 클래스)는 많은 ivars를 가지고있다. 특정 개체에 대해 "방향"이라는 ivar을 편집하고 업데이트하고 싶습니다. 각 객체에 대해 저장 한 NSIndexPath를 사용하여 관심 객체를 가져올 수 있습니다.NSOutlineView의 내용 업데이트
[self.myOutlineViewController.myTreeController setSelectionIndexPath:myIndexPath];
Fileobject *myObject =[[[self.myOutlineViewController.myTreeController.arrangedObjects descendantNodeAtIndexPath:myIndexPath] representedObject] representedObject];
[myObject setDirection:0];
잘 작동하지만 NSIndexPath에서 방금 추출한 개체를 업데이트하려고 할 때 문제가 발생합니다. 다음 충돌 : 오류 메시지
An uncaught exception was raised
2012-11-08 17:23:25.557 S3access[20379:12b03] *** -[NSKeyValueSlowMutableArray removeObjectsAtIndexes:]: value for key myArrayOfFiles of object 0x40012e460 is nil
내가 여기 Key-Value coding 뭔가 잘못을하고있는 중이 야하지만 난 그것이 무엇인지 볼 수 없습니까 이해와 [self.myOutlineViewController.myTreeController removeObjectAtArrangedObjectIndexPath:myIndexPath];
. 애플의 모든 예제에서 솔루션을 찾으려고 노력했지만 NSTreeController와 NSTreeNode를 사용하지 않는 예제 만 찾을 수 있습니다. 내 생각은 1) indexpath에서 객체 추출 2) 추출 된 객체 편집 3) indexpath에서 현재 객체 제거 4) 명령 [self.myOutlineViewController.myTreeController insertObject:myNode atArrangedObjectIndexPath:myIndexPath];
을 사용하여 indexpath에 새 편집 객체 삽입 나는 ivar 만 대체하지 않고 Key-Value 코딩을 사용하여 객체를 대체 할 수있는 방법을 보았습니다.
내가 뭘 잘못하고 어떻게 해결할 수 있습니다 제안에 대한 제안은 매우 감사하겠습니다.
환호와 감사합니다! Trond