NSManagedObject类并创建一个Setter方法

Pad*_*215 3 core-data objective-c nsmanagedobject ios

因此,在常规类中,您可以覆盖类属性的setter方法:

-(void)setSortBy:(NSString *)sortBy {
    // Do other stuff

    _sortBy = sortBy;
}
Run Code Online (Sandbox Code Playgroud)

使用它_可以防止方法的无限循环调用它自己.

我试图用NSManagedObject类做类似的事情,但它没有给出使用下划线(_)的选项:

-(void)setHasNewData:(NSNumber *)hasNewData {
    // update self.modifiyDate

    _hasNewData = hasNewData;
}
Run Code Online (Sandbox Code Playgroud)

给我一个错误,并建议我更换_hasNewDatahasNewData.

这是应该怎么做或它会给我一个无限循环?

我希望它随时更新我NSManagedObject的属性.modifyDatehasNewData

Mar*_*n R 7

如果_sortBy是 备份属性的实例变量sortBy(例如,该属性的默认合成实例变量),则"常规类"的第一个示例有效.

但Core Data属性不由实例变量备份.覆盖Core Data访问器时,必须使用"原始访问器",并触发键值观察通知:

-(void)setHasNewData:(NSNumber *)hasNewData {
    [self willChangeValueForKey:@"hasNewData"];
    [self setPrimitiveValue:hasNewData forKey:@"hasNewData"];
    [self didChangeValueForKey:@"hasNewData"];

    // do other things, e.g.
    self.modifyDate = ...;
}
Run Code Online (Sandbox Code Playgroud)

更多示例可以在"核心数据编程指南"中找到.