2011-07-04 77 views
0

我是Core Data的新成员,还有一些我还不明白的问题。核心数据和@dynamic

我有一个名为GCS(一个用于核心数据NSManagedObject的子类)实体:

@implementation GCS 

@dynamic eye; 
@dynamic ... 
@dynamic ... 

它正常工作与核心数据当我这样做:

GCS *failedBankDetails = [NSEntityDescription 
             insertNewObjectForEntityForName:@"GCS" 
             inManagedObjectContext:context]; 

failedBankDetails.eye = [NSNumber numberWithInt:12]; 

但随后,在另一我有一个属性的GCS类型:

@interface ModelManager : NSObject 
{ 
    GCS *tempGCS; 
} 

@property (nonatomic, retain) GCS *tempGCS; 
... 

在ModelManager的一个方法中,我试过这个:

tempGCS.eye = [NSNumber numberWithInt:0]; 

但引发的异常: 未能呼吁NSManagedObject类的GCS' 指定初始化 - [GCS setEye:]:无法识别的选择发送到实例0x4d32ac0

为什么不能我用点号现在?我认为@dynamic是线索,但我不应该改变它,因为我需要将它用于Core Data,对吧?

请帮助我,对不起我的英语。 谢谢!

回答

2

点符号与它无关,如果您调用[tempGCS setEye:...],则会出现相同的错误。错误在于你在创建tempGCS中的对象时忽略致电initWithEntity:insertIntoManagedObjectContext:;特别是[[GCS alloc] init]不是工作正常。

+0

我建议在你自己的自定义初始化器中包含对initWithEnitity:insertIntoManagedObjectContext的调用,以保存你每次都必须输入的内容。像initWithEye:等等 – Jonathan