ManagedObject自定义类init错误

时间:2014-08-02 16:30:36

标签: core-data nsmanagedobject

我有自定义的托管对象类:

@interface NDAEntity : NSManagedObject

@property (nonatomic, retain) NSString * text;

+(id) entityWithText:(NSString *)text;
-(void) setText:(NSString *)text;
- (void)setPrimitiveName:(NSString *)text;

@end

@implementation NDAEntity

@dynamic text;

+(id) entityWithText:(NSString *)text{
    return [[NDAEntity alloc] initWithText:text];
}

-(id) initWithText:(NSString *)text{
    if(self = [super init]){
        [self setText:text];
    }
    return self;
}

-(void) setText:(NSString *)text{
    [self willChangeValueForKey:@"text"];
    [self setPrimitiveName:text];
    [self didChangeValueForKey:@"text"];
}

@end

当我按下按钮时执行下一个代码:

NDAEntity *entity = [NDAEntity entityWithText: @"smth"];

我有错误:

  

CoreData:错误:无法调用指定的初始化程序   NSManagedObject类' NDAEntity'

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您不能只是alloc init托管对象的子类。您必须从实体创建托管对象实例并参考上下文。

通常您应该使用insertNewObjectForEntityForName:inManagedObjectContext:来执行此操作。