2011-11-17 3 views
1

이것은 쉽지만 약간의 도움이 필요합니다.1 대 다수 관계가있는 핵심 데이터 자체 참조 엔터티

코어 데이터에 자체 참조 엔터티를 사용하여 의사 결정 트리를 설정하고 있습니다. 자체 참조 테이블에서 일대 다 관계를 가질 수 있습니까? 또는 그것을 설정하는 더 좋은 방법이 있습니까?

내가 실행중인 문제는 자체 참조 관계를 일대일 관계로 설정할 때 부모 노드 객체가 자식 노드를 참조하는 NSSet에 추가된다는 것입니다. "To-Many"와의 관계를 선택하면 다 대 다 관계로 설정되는 것 같습니다.

저는 일대일 관계와 다 대다 관계라는 별도의 관계를 설정하고, 일대일 관계를 부모로 설정함으로써이 문제를 해결할 수있었습니다 노드,하지만 역방향 관계를 설정할 수 없습니다. 역방향 관계를 설정하지 않으면 컴파일러 경고가 표시됩니다.

모든 아이디어와 아이디어를 높이 평가합니다!

답변

0

부모님과 일대일로 설정하는 것이 좋습니다. 그러나 아이들은 일대 다이어야합니다. 맞습니까? 논리적으로, 이들 각각의 두 관계는 서로의 역 관계입니다. Xcode의 데이터 모델 편집기에서이를 선택할 수 있어야합니다.

2

매트 W,

먼저 Core Data와의 싸움을하지 마십시오. 너 잃을거야.

둘째, 몇 가지 코드를 보여주십시오. 나는 네가 생각하는대로 관계를 사용하지 않을 수도 있다고 생각한다.

셋째, 귀하의 문제에 관심이있는만큼, 나는 당신의 나무에 대한 간단한 예를 썼습니다. 여기에 몇 가지 코드는 다음과 같습니다

자기 참조 클래스 :

@interface ToMany : NSManagedObject 

@property (nonatomic, retain) NSDate * date; 
@property (nonatomic, retain) NSSet *children; 
@property (nonatomic, retain) ToMany *parent; 
@end 

코드 어떤 컴파일러 오류없이 클래스를 사용 : 나는 문제의 당신의 설명을 구현했다고 생각

ToMany *parent = [NSEntityDescription insertNewObjectForEntityForName: kToManyEntity 
               inManagedObjectContext: self.managedObjectContext]; 
parent.date = NSDate.date; 

ToMany *child1 = [NSEntityDescription insertNewObjectForEntityForName: kToManyEntity 
               inManagedObjectContext: self.managedObjectContext]; 
child1.date = parent.date; 
child1.parent = parent; 

ToMany *child2 = [NSEntityDescription insertNewObjectForEntityForName: kToManyEntity 
               inManagedObjectContext: self.managedObjectContext]; 
child2.date = parent.date; 
child2.parent = parent; 

. 네가 걱정 하는게 뭐야?

앤드류