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