从类方法获取NSManagedObject的NSEntityDescription

时间:2014-11-30 21:23:07

标签: objective-c cocoa core-data nsmanagedobject class-method

我向NSManagedObject添加了几个类方法,其中一个我需要获取它的NSEntityDescription。问题是,entity是一种实例方法,我不知道如何从类方法中访问它。

有没有办法做到这一点,没有创建一个虚拟实例只是为了访问这个属性?听起来像是一个可怕的黑客...

1 个答案:

答案 0 :(得分:3)

NSManagedObject课程无法了解NSEntityDescription,因为课堂上没有entity。看看- (instancetype)initWithEntity:(NSEntityDescription *)entity insertIntoManagedObjectContext:(NSManagedObjectContext *)context;在使用实体描述初始化它之后,您将能够从实例中检索它。

实现您所描述的内容的一种方法是为您的Core Data实体提供NSManagedObject子类(这是一种推荐的方法),并且有一个类方法+ (NSString)entityName,它将返回表示核心数据模型中的实体名称。

+ (NSString *)entityName {
    return @"MyEntity";
}

如果我们假设类名和实体名称相同,则可以这样做:

+ (NSString *)entityName {
    return NSStringFromClass(self);
}

希望它有所帮助。