如何在iOS中设置自定义属性?

时间:2013-10-30 17:17:50

标签: ios core-data properties ios7

我正在使用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。但是如何在不进入递归循环的情况下设置属性的值?

1 个答案:

答案 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"];
}