在我的 NSManagedObject 子类中,我想在接口中将特定属性指定为只读,但在实现中指定为读写。我以前在其他课程中也这样做过。但是核心数据生成的子类在实现中使用@dynamic,似乎我无法将读写装饰器添加到@dynamic,就像可以使用@property 一样。
这可能吗?
您可以在头文件中将属性声明为readonly
,然后在实现中为 setter 提供您自己的实现:
(使用 ARC)
@interface Person : NSManagedObject
@property (nonatomic, readonly) NSString * name;
- (void)changeName;
@end
@implementation Person
@dynamic name;
- (void)changeName
{
self.name = @"Test";
}
- (void)setName:(NSString *)name
{
[self willChangeValueForKey:@"name"];
[self setPrimitiveValue:name forKey:@"name"];
[self didChangeValueForKey:@"name"];
}