我有一个NSManagedObjectContext
类别,它在另一个NSManagedObject
中插入NSManagedObjectContext
并返回项目:
@implementation NSManagedObjectContext (GTEntity)
- (id)addEntity:(id)entity {
NSManagedObject *entityObject = [self objectWithID:[entity objectID]];
return entityObject;
}
@end
我的问题是我如何返回与我相同类型的对象。我的意思是,如果我用[ctx addEntity:city]
调用City *city
,其中City是NSManagedObject
子类,我想在其他上下文中获取对象但是相同类型,而不是{{1 }类型。此类型是通用的,应在运行时从实体确定,如NSManagedObject
。我找到了一些宏,但在objc_getClass(entity)
之后有一些奇怪的错误Expected "]"
:
(cls *)
答案 0 :(得分:1)
City *city = [someManagedObjectContext addEntity:someCityObject];
假设City
来自NSManagedObject
。您的返回变量将被动态转换。虽然我不相信从中创建一个类别可以获得任何东西,但你可以直接这样做:
City *city = [someManagedObjectContext objectWithID:[someCityObject objectID]];