データ モデルに複数のエンティティを持つ Core Data を利用するアプリケーションを構築しています。私がやりたいことは、NSString となるメソッドが受け取る名前に基づいて、NSManagedObject の適切なサブクラスを作成できるメソッドを作成することです。
私の方法は次のようになります。
- (NSManagedObject *) addEntity:(NSString *)name {
NSManagedObjectContext *context = [self managedObjectContext];
NSError *error;
//need to add a line here that casts EntityType to of type "name" which is passed into the method.
EntityType *testEntity = [NSEntityDescription insertNewObjectForEntityForName:name inManagedObjectContext:context];
[context save:&error];
return testEntity;
}
ここで、「EntityType」は「name」型であり、「Manager」という名前をメソッドに渡すと、「Manager」型のオブジェクトが作成されます。したがって、上記の行:
EntityType *testEntity = [NSEntityDescription insertNewObjectForEntityForName:name inManagedObjectContext:context];
読みます:
Manager *testEntity = [NSEntityDescription insertNewObjectForEntityForName:name inManagedObjectContext:context];
メソッドに渡すタイプに基づいてエンティティを動的に作成するには、どうすればよいですか? アプリケーションに 20 を超えるエンティティがあり、それらのいずれにも使用できるメソッドを 1 つだけにしたいので、これを行っていることに注意してください。