核心数据和@dynamic

时间:2011-07-04 21:55:49

标签: core-data dynamic

我是Core Data的新手,还有一些我还不了解的问题。

我有一个名为GCS的实体(NSManagedObject for Core Data的子类):

@implementation GCS

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

当我执行此操作时,它可以正常使用Core Data:

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,对吧?

请帮帮我,抱歉我的英语。 谢谢!

1 个答案:

答案 0 :(得分:2)

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