假设我有一个NSManagedObject
名为MBManagedSquare
and的子类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;
但我得到一个预期的表达式错误。我不确定这是否可能。我该怎么做?