2010-07-19 4 views
1

KVC 메커니즘이 서로 역관계 인 관계 속성을 다룰 때 어떤 종류의 도움을 제공하는지 알아 내려고합니다. 고안된 표준 Department/Employee 예제를 사용하겠습니다.코코아 키 값 코딩 및 역관계 특성

그냥 KVC 수집 방법을 사용하면 KVC가 양방향으로 관계를 관리하기 위해 어떤 도움을 제공합니까? 저는 지금 개념적 단계에 있습니다. 코어 데이터를 사용하여 명시 적 역 관계를 설정할 수 있으므로 [myDepartment insertObject:newEmployee inEmployeesAtIndex:lastIndex];을 사용하면 newEmployee.department이 자동으로 myDepartment으로 설정되지만 KVC와 런타임에서만이를 수행 할 수 있습니까? 아니면 코어 데이터가 필요합니까?

도움을 주셔서 미리 감사드립니다.

편집 다소 무관뿐만 아니라 중요한, 내 코드에서 나는 부서 직원의 속성이 retain 인 것으로 넣어하지만 이것은 사이클을 유지하게됩니다 만약 내가 궁금하네요?

답변

1

반비 관계를 유지하는 데 도움이되는 키 - 값 코딩에는 직접적인 것이 없습니다. 그러나 키 - 값 을 관찰하면을 관찰 할 수 있습니다.

당신이해야 할 주요 것들

은 다음과 같습니다 결국 당신이 임의 보장 할 수 없기 때문에

  • , 그냥 직접 엔티티 클래스 NSObject의 서브 클래스가 아닌, NSManagedObject에 자신의 클래스에 해당 구현 NSObject 서브 클래스는 여러분이 생각해 낸 시스템에서 작동합니다. (또는 EOF는 EOEnterpriseObject 프로토콜을 사용하여 수행했습니다.)
  • 엔티티 클래스의 인스턴스 관찰을 처리하기 위해 NSManagedObjectContext와 동일한 클래스를 구현하여 수행하도록 지시 할 수 있습니다 적절한 시간에 역방향 유지 보수. KVO에 의해 트리거 된 역방향 유지 보수는 KVO를 다시 트리거하지 않아도되므로 역방향 유지 관리를 트리거하는 등의 이점이 있습니다.
  • NSManagedObjectModel과 동일한 클래스 계층 구조를 구현하여 NSManagedObjectContext와 동일한 기능을 수행하면 엔티티 클래스의 인스턴스 속성 중 역 관계를 가질 수있는 속성과 그 속성을 알 수 있습니다.

이 모든 것을 감안할 때 이미 코어 데이터를 사용하고 싶을뿐입니다. 이미 그 모든 작업을 수행하고 있기 때문에 꽤 잘 수행하기 위해 광범위하게 조정되었습니다.

+0

아하, 나는 이것이 유일한 길임을 깨닫기 시작했다. 당신은 맞습니다. 그 노력 때문에 Core Data를 사용하는 것이 훨씬 낫습니다. 그러나, 나의 요구가 아주 작기 때문에 (아주 작은 객체 그래프) 나는 "손으로"하는 일을하는 것만으로도 얻을 수 있다고 생각한다. 철저한 답변 주셔서 감사합니다! – jbrennan