我正在使用Core Data,并希望在设置属性时运行一些自定义代码。
@interface FTRecord : NSManagedObject
@property (nonatomic) NSTimeInterval timestamp;
@implementation FTRecord
@dynamic timestamp;
-(void)setTimestamp:(NSTimeInterval)newTimestamp
{
//run custom code....
//and now how to pass the value to the actual property?
[self setTimestamp:newTimestamp];
}
在这种情况下,我已经为timestamp属性定义了setter body。但是如何在不进入递归循环的情况下设置属性的值?
答案 0 :(得分:2)
为每个属性生成一个神奇的访问器,在您的情况下称为setPrimitiveTimestamp:
,您可以使用它。看一下NSManagedObject的- (void)setPrimitiveValue:(id)value forKey:(NSString *)key
的文档。
所以,你想要:
-(void)setTimestamp:(NSTimeInterval)newTimestamp
{
//run custom code....
//and now how to pass the value to the actual property?
[self willChangeValueForKey:@"timestamp"];
[self setPrimitiveTimestamp:newTimestamp];
[self didChangeValueForKey:@"timestamp"];
}