NSManagedObjectと呼ばれるサブクラスがあるとMBManagedSquareしMBManagedCircleます。MBManagedSquareとMBManagedCircleメソッドを定義し、prepareFromDictionary:(NSDictionary*)dic両方の実装が異なります。
このコードがあるとします:
NSString *type = // could be @"MBManagedSquare" or @"MBManagedCircle"
NSEntityDescription *desc = [NSEntityDescription entityForName:type inManagedObjectContext:_context];
NSManagedObject *object = [[NSManagedObject alloc] initWithEntity:desc insertIntoManagedObjectContext:_context];
そのため、Core Data でのエンティティのタイプは、type文字列を介して動的に決定されます。だから私が知っているのは、それがNSManagedObject.
私がやりたいことはprepareFromDictionary:、適切なクラスのメソッドを呼び出すことです。
したがって、タイプが「MBManagedSquare」の場合、オブジェクトを にキャストしてからMBManagedSquare呼び出したい
[castedObject prepareFromDictionary:dic];
私が試したことは次のとおりです。
Class class = NSClassFromString(type);
class *castedObject = (class*)object;
しかし、予想される式エラーが発生します。これが可能かどうかはわかりません。どうすればいいですか?