我有一个类别,它在另一个NSManagedObjectContext中插入一个并返回项目:NSManagedObjectNSManagedObjectContext
@implementation NSManagedObjectContext (GTEntity)
- (id)addEntity:(id)entity {
NSManagedObject *entityObject = [self objectWithID:[entity objectID]];
return entityObject;
}
@end
我的问题是我如何返回与我拥有的相同类型的对象。我的意思是,如果我调用[ctx addEntity:city]with City *city,其中 City 是一个NSManagedObject子类,我想在其他上下文中获取对象,但类型相同,而不是NSManagedObject类型。这种类型是通用的,应该在运行时从实体中确定,例如objc_getClass(entity). 我发现了一些宏,但之后出现了一些奇怪的Expected "]"错误(cls *):
#define objc_dynamic_cast(obj, cls) \
([obj isKindOfClass:(Class)objc_getClass(#cls)] ? (cls *)obj : NULL)