我有一个类别,它在另一个NSManagedObjectContext
中插入一个并返回项目:NSManagedObject
NSManagedObjectContext
@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)