0

在我的 NSManagedObject 子类中,我想在接口中将特定属性指定为只读,但在实现中指定为读写。我以前在其他课程中也这样做过。但是核心数据生成的子类在实现中使用@dynamic,似乎我无法将读写装饰器添加到@dynamic,就像可以使用@property 一样。

这可能吗?

4

1 回答 1

0

您可以在头文件中将属性声明为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"];
}
于 2013-04-14T12:32:53.153 回答