У меня есть категория для NSManagedObjectContext
, который вставляет в другой NSManagedObjectContext
и возвращает элемент в NSManagedObject
:Динамическое приведение типов во время выполнения
@implementation NSManagedObjectContext (GTEntity)
- (id)addEntity:(id)entity {
NSManagedObject *entityObject = [self objectWithID:[entity objectID]];
return entityObject;
}
@end
Мой вопрос, как я вернусь объект того же типа, как у меня. Я имею в виду, если я позвоню [ctx addEntity: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)