클래식 관리자 < - 부서 -> 직원 데이터 모델이 있다고 가정 해 보겠습니다. 관리자가 개인 개체에서 상속 한 직원 엔터티에서 상속하는 곳.코어 데이터 : 공통 속성을 유지하면서 객체의 엔티티를 동적으로 변경하는 방법
관리자와 직원 세트가있는 부서가있는 경우 관리자가 자신의 직업을 잃어 버리고 직원에게만 강등되는 관리자와 관리자로 승격 된 직원 중 하나를 프로그래밍 방식으로 어떻게 나타낼 수 있습니까?
핵심 데이터 용어로, 필자는 관리 대상을 Person의 하위 클래스로 유지하면서 관리 대상 개체를 변경하고 해당 엔터티를 변경하려고합니다. 이것을 할 수있는 현명한 방법이 있습니까? 아니면 직원을 홍보하고 관리자를 강등하는 방법을 써야합니까? 예 :
+ (Employee *)demoteManager:(Manager *)manager {
// Get the context
NSManagedObjectContext *context = [manager managedObjectContext];
// Create a new employee object (mogenerator style)
Employee *employee = [Employee insertIntoManageObjectContext:context];
// Set attributes etc
employee.name = self.name;
// Set relationships etc
Department *dept = manager.manages;
[dept addEmployeesObject:employee];
employee.department = dept;
dept.manager = nil;
manager.manages = nil;
// Delete manager
[context deleteObject:manager];
// Save
NSError *error = nil;
[context save:&error];
return employee;
}
등? 그리고 저는 Employee (isManager)에 부울 플래그를 넣어야한다는 것을 알고 있습니다.하지만이 질문에 대한 인위적인 예제입니다. 실제로 플래그를 사용하고 싶지는 않습니다.
따라서 일부 Core Data 마법사가 이미이 작업을 수행하거나 더 좋은 방법을 알고 있다면 듣고 싶습니다! 당신은 AFAIK, 코어 데이터의 엔티티의 유형을 변경할 수 없습니다
실제로 나쁜 생각은 아닙니다. (일대일 관계로 다른 엔티티에 "관리자"특정 항목 넣기). 지금은 Employee 엔티티 설명 propertyByName 키를 통해 for 루프를 작성/삭제하고 for 루프를 수행함으로써 승격 및 강등하는 Manager에 대한 두 가지 메소드를 얻었습니다. 괜찮은 것 같아. –