古典的なマネージャ< - Department(s) - >> Employeeデータモデルがあるとします。マネージャは、Personエンティティから継承したEmployeeエンティティから継承します。コアデータ:一般的な属性を維持しながらオブジェクトのエンティティを動的に変更する方法
マネージャーと従業員のセットがある部門がある場合、マネージャーに職務を喪失し、従業員だけに降格されたマネージャーと、昇格された従業員の1人をプログラムで表すことはできますか?
コアデータの言い回しでは、私は管理対象オブジェクトを取得し、そのエンティティを変更したいが、それを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)にブール値のフラグを付けるだけでよいことを認識していますが、これは実際にはフラグを使用したくないというこの疑問のために考案された例です。
コアデータウィザードで既にこれを行っていたり、より良い方法を知っていれば、聞いてみたいと思います!
乾杯、
それは実際には悪い考えではありません(1対1の関係で別のエンティティに「マネージャ」の特定のものを置く)。現時点では、Employeeエンティティの説明のpropertyByNameキーに対してforループを作成/削除し、forループを実行することによって、昇格と降格の2つのメソッドがManager上にあります。大丈夫だと思う。 –