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;
しかし、予想される式エラーが発生します。これが可能かどうかはわかりません。どうすればいいですか?