2015-01-27 2 views
0

두 가지 속성, 즉 이름과 개체가있는 일반 클래스가 있습니다. objects 속성에는 여러 가지 유형의 사용자 정의 객체가있을 수 있습니다.핵심 데이터 관계에 여러 대상이있을 수 있습니까?

여러 가지 유형의 객체를 포함 할 수 있도록 객체 속성에 일대 다 관계를 설정하는 방법이 있습니까?

NSArchiver 및 변형 가능한 형식을 사용할 수 있지만 다른 방법이 있는지 궁금합니다.

+0

왜 하나의 관계로해야합니까? 어떤 종류의 커스텀 객체입니까? Ints/Strings와 같은 기본 유형의 콜렉션입니까? 그렇다면 객체의 각 유형에 대해 엔티티를 만들 것입니다. 일대일 관계가 많으면 아무런 문제가 없습니다. 그들이 더 많은 사용자 정의 유형을 포함한다면, 나는 당신의 접근 방식을 재고 할 것이다. Core Data를 화나게하지 않으려 고 노력합니다. –

+0

설명 드리겠습니다. 나는 arrayB 속성을 가진 ClassA를 가졌다; arrayB에는 ClassC의 인스턴스가 포함됩니다. ClassC의 property는 arrayD입니다. arrayD의 각 인스턴스에는 ClassE 또는 ClassF 또는 ClassG의 인스턴스가 있습니다. 문제는 arrayD가 하나의 클래스가 아닌 다른 클래스의 인스턴스를 포함 할 수 있다는 것입니다. – cohenadair

+0

저장하기 전에 스위치를 배치하고 배열의 첫 번째 항목을 확인하면 세 가지 핵심 데이터 엔티티 중 하나로 저장할 수 있습니다. 가져올 때 세 가지를 모두 가져 와서 되돌아 오는 것을보십시오. –

답변

1

클래스의 인스턴스에 대한 참조가 하위 클래스의 인스턴스를 가리킬 수 있으므로 다른 하위 요소와 관계를 가질 수 있습니다. 그러나 id과 같이 어떤 인스턴스와도 관계를 맺을 수는 없습니다.

중요 : 하위 항목은 한 테이블로 모델링되어 형제 속성을 비워 둡니다. 그것은 아주 큰 테이블로 이어질 수 있습니다.

바이너리 데이터 (작동하지 않는 경우, 작성 관계 인 경우) 대신 대상 엔티티 이름과 id와 유사한 두 가지 속성을 사용하여 상황을 처리 할 수 ​​있습니다. 물론 이러한 관계를 해결하려면 추가 코드가 필요합니다.

+0

그래서 ClassA를 가리키는 일대 다 관계를 갖고 ClassA의 서브 클래스로 채울 수 있습니까? – cohenadair

+0

하위 사이트가 아니라 하위 클래스! 항상 클래스 나 하위 클래스로 엔티티를 채울 수 있습니다. 그러나 디스크에는 엔터티에 설명 된 속성 만 있습니다. –

+0

Subentities? 네가 하나를 만들 수 있다는 것을 몰랐는데? – cohenadair

관련 문제