2013-11-01 2 views
0

엔티티 관계의 속성에 액세스 할 때 코어 데이터가 오류를 발생시키지 않는 이유를 알아 내는데 약간의 문제가 있습니까?코어 관계 속성에 액세스 할 때 코어 데이터가 실행되지 않음?

NSManagedObject 
    |  
MYManagedObject (NSNumber *id) 
    | 
MYSimpleManagedObject (NSString *name) 
    | 
Employee 
     \ 
     Manager 

과 직원 및 관리자 위의 시나리오에서

NSManagedObject 
    | 
MYManagedObject (NSNumber *id) 
    | 
MYSimpleManagedObject (NSString *name) 
    | 
    Manager 
     \ 
     Employee 

가 모두 :

나는 길에 내가 지금처럼되는 내 NSManagedObjects를 서브 클래스입니다 때문에 이유가있을 수 있습니다 느낌이있다 내 데이터 모델에서 엔티티 자체가 아닌 몇 가지 다른 클래스의 하위 클래스가 아니라 많은 엔티티에 공통적 인 ID 및 이름과 같은 코드 속성을 캡슐화하는 데 사용한 정규 클래스. 이 모델은 그러나 내 문제는 다음 문 하지 화재 고장 대신 내가 [manager valueForKeyPath:@"employee.name"]를 사용하는 경우에는 오류가 해고 manager.employee.name

을 수행하고 내가 필요로하는 가치를 얻을 수 있다는 것입니다 나를 위해 정말 잘 근무하고있다.

값을 사용하여 오류를 발생 시키려면 액세스 자 메서드 또는 다른 것을 재정의해야합니까?

답변

0

모델 편집기에서 특정 엔티티를 지정하여 상위 엔티티를 가질 수 있습니다. 핵심 데이터에서 상위 엔티티를 모델링하고 상위 - 하위 관계를 지정하는 것이 좋습니다.

내 경험에 따르면 접근자는 예상대로 작동해야합니다.

+2

그러나 응답은 [this] (http://www.objc.io/issue-4/core-data-models-and-model-objects.html) 게시물에서 알 수 있듯이 Entity Hierarchy vs. Class Hierarchy 섹션에서 제안한 모델을 따르는 경우 모든 하위 클래스 속성이 공통 테이블에 저장됩니까? 큰 데이터 집합을 가진 수많은 하위 클래스가있는 경우이 모든 데이터를 하나의 테이블에 저장합니다. –

+0

퍼포먼스 히트를 겪을 것이라 생각되면 엔티티 클래스'Manager'와'Employee' 둘 다에'id'와'name'의 두 속성을 모델링하면됩니다. 그러나 당신이 정말로 성능 문제를 치지 않는 한 나는 이것을하지 않을 것이다. – Mundi