올바른 방법은 생성 된 NSManagedObject 하위 클래스에서 관계를 설정하는 것입니다. mogenerator (http://rentzsch.github.io/mogenerator/)라는 도구를 확인해 주시면 핵심 데이터 엔티티 하위 클래스에 추가하는 모든 사용자 정의 코드를 손실하지 않고도 핵심 데이터 모델을 지속적으로 변경할 수 있습니다. 코어 데이터 엔티티를 처리하기 위해 작성한 사용자 정의 코드를 손상시키지 않으면 서 모델을 변경할 때마다 새로운 하위 클래스를 자동으로 생성하도록 Mogenerator를 설정할 수 있습니다. 핵심 데이터를 진지하게 사용하려는 경우 시간 투자를 통해 가치를 발견 할 가치가 있습니다.
이러한 파일을 수동으로 생성하려면 (mogenerator없이) Xcode의 코어 데이터 모델 파일을 클릭하고 하위 클래스를 만들고자하는 엔티티를 선택하고 '편집자'메뉴를 클릭 한 다음 'Create NSManagedObject Subclass ... '
이렇게하면 EntityA.h 및 EntityA.m (또는 메뉴 항목을 클릭 할 때 선택한 엔터티에 따라 EntityB)이라는 두 개의 파일이 만들어집니다. 다른 엔티티가 파일을 생성하기 위해 동일한 프로세스를 다시 수행하십시오 (주 : 이러한 파일을 생성하기 전에 관계 설정을했는지 확인하십시오. 그렇지 않으면 다시 생성해야합니다).
그때 보통이 같은 클래스 메소드를 만듭니다
//In EntityA.h
//between @interface and @end...
+ (EntityA*)createNewEntityAInContext:(NSManagedObjectContext*)context;
//In EntityA.m
+ (EntityA*)createNewEntityAInContext:(NSManagedObjectContext*)context
{
EntityA* aEntityAObject = [NSEntityDescription insertNewObjectForEntityForName:@"EntityA" inManagedObjectContext:context]
EntityB* aEntityBObject = [EntityB createNewEntityBInContext:context];
aEntityAObject.entityBLink = aEntityBObject;
return aEntityAObject;
}
//In EntityB.h
//between @interface and @end...
+ (EntityB*)createNewEntityBInContext:(NSManagedObjectContext*)context;
//In EntityB.m
+ (EntityB*)createNewEntityBInContext:(NSManagedObjectContext*)context
{
EntityB* aEntityBObject = [NSEntityDescription insertNewObjectForEntityForName:@"EntityB" inManagedObjectContext:context]
return aEntityBObject;
}
을 그런 다음 호출 할 수 있습니다 + createNewEntityAInContext : 새 객체를 원하고 관계가 자동으로 생성 될 때마다 방법.
다른 질문에 대해서는 사용자 지정 핵심 데이터 마이그레이션 정책이라고합니다. 당신은 구글에서 그 주제에 대한 자습서를 검색 할 수 있고 많은 링크가 있습니다. 언뜻보기에 꽤 잘 어울리는 것을 찾았습니다. http://9elements.com/io/index.php/customizing-core-data-migrations/