无法将Core Data瞬态属性设为私有

时间:2011-10-14 16:45:20

标签: objective-c core-data private transient

我有一个具有瞬态attr Series的核心数据实体indexCurrent。当外部类访问indexCurrent时,我希望它们发送一个arg,用于检查indexCurrent的值是否需要在返回之前更新。因此,我已将indexCurrent声明为私有变量,并且只允许通过具有arg的特殊方法对其进行外部访问。

但是虽然编译器发出“找不到方法”警告,但它允许外部类同时调用indexCurrentsetindexCurrent:,并且这个错误的代码执行完全成功。

以下是Series界面:

@interface Series : NSManagedObject {
@private
NSNumber *indexCurrent;  
}

indexCurrent没有属性,在实现文件中未声明为动态,我还没有编写indexCurrentsetindexCurrent:个访问者。

我做错了什么?如何将indexCurrent设为私有?

1 个答案:

答案 0 :(得分:2)

@dynamic不会导致生成任何代码。无论您是否使用@dynamic,Core Data都会为属性访问器生成代码。 @dynamic只是通知编译器将生成代码,因此它不需要警告缺少方法。这就是您收到警告但没有运行时错误的原因。

实例变量上的@private并没有做太多。默认为@protected,这意味着外部类无论如何都无法访问它,只有类本身和子类。在任何情况下,默认的Core Data访问器都不使用实例变量。

我不确定如何做你想做的事。