2009-10-21 2 views
4

두 개의 다른 엔티티 (예 : 부서 및 팀)와 관련된 관리 객체 모델에 엔티티 (예 : 직원)가 있습니다. 두 관계는 일대 다 (즉, 직원이 한 부서와 한 팀, 팀과 부서에 많은 직원이 있어야 함)입니다. 이 둘은 겹칠 수도 겹치지 않을 수도 있습니다 (예 : 팀이 HR의 직원으로 구성 될 수 있음, 회계 & I.T. 또는 한 부서의 여러 직원으로 구성 될 수 있음).엔티티를 배열 컨트롤러에서 제거 할 때 엔티티를 어떻게 삭제합니까?

Department <-->> Employee <<--> Team  

2 개의 NSTableViews, 부서 테이블 및 팀 테이블에 대한 데이터를 제공하는 두 개의 NSArrayController가 있습니다. 직원들은 아무런 문제없이 부서 간 및 팀 간 이동이 가능하지만 직원을 삭제 (화재)하는 방법을 모르겠습니다.

어레이 컨트롤러 중 하나를 제거 메시지를 보내면 직원이 팀에서 (예를 들어) 퇴장했지만 부서에 남아 있고 개체 그래프가 일관성없는 상태에 있습니다. 두 컨트롤러에서 remove 액션을 호출하더라도 객체는 삭제되지 않습니다.이 객체는 고아이고 limbo에서 멈 춥니 다.

원래 부서 ()가 Nullify의 삭제 규칙으로 설정되었지만 하나 또는 둘 다를 계단식으로 변경해도 도움이되지 않습니다.

실제로 직원을 삭제하려면 배열 컨트롤러에서 remove : 작업을 덮어 써야합니까, 아니면 정말 분명하지 않은 것이 있습니까?

답변

9

NSArrayController에는 핵심 데이터를 사용할 때 두 가지 동작이 있습니다. 관리 객체 컨텍스트에서 객체를 직접 가져 오도록 구성되어 있으면 제거 될 때 객체를 삭제합니다.

contentSet을 다른 컨트롤러에 바인딩하는 경우이 경우처럼 들리는 것처럼 기본 동작은 단순히 관계에서 개체를 제거하는 것입니다. 그러나 삭제하려는 경우 "제거시 삭제 객체"바인딩 옵션이있어 원하는 결과를 얻을 수 있습니다.

+0

그런 간단한 것! 나는 정말로 바인딩 옵션을보아야했다! !! 물론 삭제 규칙을 계단식에서 다시 무효로 변경해야했습니다! 감사합니다. Alex! 나는 당신의 답변을 투표 하겠지만 나는 아직 충분한 평판 포인트가 없다! :) – Matthew

관련 문제