NSTableView에서 NSDictionary의 일부 항목을 보여주고 싶은 몇 가지 시나리오가 있습니다. (NSDictionaryController에 대한 나의 본능은 항상 모든 객체가 copyWithZone을 구현할 필요성에 의해 좌절되며, 유용성에 치명적일 수밖에없는 터무니없는 요구 사항입니다 ...)NSArrayController를 NSDictionary allValues에 바인딩하기
대신에 NSArrayController는 NSDictionary의 allValues 속성에 배열의 객체에 대한 다양한 속성을 테이블의 각 열에 바인딩합니다. 그러나 배열 컨트롤러의 컨트롤러 키 및 모델 키 경로 속성을 통해 Cocoa에서이 바인딩을 지정하는 올바른 방법을 찾을 수 없습니다.
배열을 allValues에 직접 바인딩하려고하면 배열 컨트롤러의 arrangedObjects 속성이 항상 비어 있습니다. 개체가 사전에 추가 된 경우에도 [dictionary willChangeValueForKey : @ "allValues"] 및 [ 사전 didChangeValueForKey : @ "allValues"] 객체를 추가 한 후 배열 컨트롤러에서 setContent :를 호출 한 후에도 호출됩니다. 물론
는,이 스택 오버플로 스레드 발견
Binding to an NSDictionary's "allValues" array
을 ... 그리고 다양한 버전을 시도 @ 모델 키 경로 필드에 "allValues @", 그러나 아무도는 원하는 결과를 생성하지 않습니다.
그래서 여기 내 질문 : 개체에 바인딩 된 ArrayControllerOne 있고 ArrayControllerOne.selection 내에서 NSDictionary 속성의 allValues 속성 ("인스턴스")에 바인딩하려면 ArrayControllerTwo 싶습니다, 내가 무엇을 입력해야합니까 컨트롤러 키 및 모델 키 경로 필드? 사전에
감사합니다 ...
사전이 다른 배열 컨트롤러의 선택 항목 일 때 allValues에 바인딩하려는 이유가 명확하지 않습니다. 네가하려는 일을 상상하기가 힘듭니다. 어떤 종류의 데이터가 arrayController1에 바인딩되어 있는지를 예를 들어 설명하면 도움이 될 것입니다. – rdelmar
내 시나리오에서 사전은 "다른 어레이 컨트롤러의 선택 사항"이 아닙니다. 그것은 단지 클래스 인스턴스의 멤버입니다. 즉, 사전에 구성원이있는 객체가 있고 사전에 각 * value *에 대한 정보가 반영된 표를 각 열에 표시하려고합니다. 또한 사용자가 테이블에서 행을 선택하고 행이 나타내는 사전 값에 액세스 할 수있게하고 싶습니다. 이 두 가지 작업을 수행하려면 my_obj.my_dict.allValues에 바인딩 된 배열 컨트롤러를 만들고 배열 컨트롤러의 항목 속성에 바인딩 된 열이있는 테이블을 만들고 싶습니다. –