1

のカテゴリがあり、別のカテゴリにNSManagedObjectContextを挿入してアイテムを返します。NSManagedObjectNSManagedObjectContext

@implementation NSManagedObjectContext (GTEntity)

- (id)addEntity:(id)entity {
     NSManagedObject *entityObject = [self objectWithID:[entity objectID]];
     return entityObject;
}

@end

私の質問は、私が持っているのと同じタイプのオブジェクトをどのように返すかです。つまり、Cityがサブクラスである、で[ctx addEntity:city]呼び出す場合、オブジェクトを他のコンテキストで取得したいのですが、タイプではなく同じタイプです。このタイプは汎用であり、実行時にエンティティから決定する必要があります。いくつかのマクロを見つけましたが、次の後にいくつかの奇妙なエラーがあります:City *cityNSManagedObjectNSManagedObjectobjc_getClass(entity)Expected "]"(cls *)

#define objc_dynamic_cast(obj, cls) \
([obj isKindOfClass:(Class)objc_getClass(#cls)] ? (cls *)obj : NULL)
4

1 に答える 1

1

から派生するとCity *city = [someManagedObjectContext addEntity:someCityObject];仮定してください。戻り変数は動的にキャストされます。カテゴリを作成することで得られるものはないと思いますが、次のように直接行うことができます。 CityNSManagedObject

City *city = [someManagedObjectContext objectWithID:[someCityObject objectID]];
于 2013-02-13T01:36:26.763 に答える