私の NSManagedObject サブクラスでは、特定の属性をインターフェイスでは読み取り専用として指定し、実装では読み取り書き込みとして指定したいと考えています。私は以前に他のクラスでこれを行いました。しかし、Core Data で生成されたサブクラスは実装で @dynamic を使用しており、@property で実行できるように @dynamic に readwrite デコレータを追加できないようです。
これは可能ですか?
ヘッダー ファイルでプロパティを次のように宣言し、readonly
実装でセッターに独自の実装を提供できます。
(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"];
}