覆盖类类别中的属性设置器

Dan*_*552 6 objective-c ios

我有一个NSManagedObject类,我想覆盖一个setter,但我被告知最好不要修改自动生成的类文件并创建类别而是扩展它们(因为如果你更改模型并重新生成文件,你失去了所有的补充).

如果我在类别中为setter创建一个方法,它肯定会运行该方法(使用NSLog测试),但我不知道如何分配实际的属性值.通常,我会使用合成属性

@synthesize finished = _finished;

这样我就可以使用setter访问setter中的属性_finished,如下所示:

- (void)setFinished:(NSNumber *)finishedValue {
    _finished = finishedValue;
    self.end_time = [NSDate date];
}
Run Code Online (Sandbox Code Playgroud)

但是在这里定义属性NSManagedObject似乎是不可能的.

jit*_*roy 8

您可以使用子类来查看此处的doc

- (void)setName:(NSString *)newName
{
    [self willChangeValueForKey:@"name"];
    [self setPrimitiveName:newName];
    [self didChangeValueForKey:@"name"];
}
Run Code Online (Sandbox Code Playgroud)

  • 使用`[self setPrimitiveValue:finished forKey:@"finished"]`似乎在类别中工作,这就是我想要的,感谢我带领我走向正确的方向 (4认同)