【发布时间】:2014-04-28 14:10:37
【问题描述】:
我开始学习如何在我的应用程序中使用 Core Data,我对 NSManagedObject 有一个关于 setter 和 getter 的问题。
在我的旧模型中,我使用这种语法来声明属性:
@interface MyModel : NSObject
{
MyAttributeOfClass *_myAttributeOfClass
}
- (void)setMyAttributeOfClass:(MyAttributeOfClass *)anAttributeOfClass;
- (MyAttributeOfClass *)myAttributeOfClass;
我知道,我可以使用 @synthesize 来做这些事情。但是,如果我使用带有公共属性的@synthesize,例如:
@property (nonatomic, strong) MyAttributeOfClass *myAttributeOfClass;
开发人员可以绕过我的设置器并通过这样做直接为myAttributeOfClass 设置一个值:myAttributeOfClass = bar;。我不想允许这种行为,因为我使用 setter 来执行操作。如果不执行此操作,我的班级将无法正常工作。
所以,现在我将旧模型迁移到从 NSManagedObject 子类化的 Core Data 模型。
但是当我从我的数据模型生成类时,属性是这样声明的:
@property (nonatomic, retain) MyAttribute *myAttribute;
因此,开发人员可以在不调用 setter 的情况下为该属性设置值:myAttribute = bar;我想禁止它。
有什么建议吗?
谢谢!
【问题讨论】:
标签: ios objective-c core-data setter