因此,在常规类中,您可以覆盖类属性的setter方法: -(void)setSortBy:(NSString *)sortBy { // Do other stuff _sortBy = sortBy;} 使用_可以防止调用自身的方法的无限循环. 我试图用NSManagedObject类做类似的事
-(void)setSortBy:(NSString *)sortBy { // Do other stuff _sortBy = sortBy; }
使用_可以防止调用自身的方法的无限循环.
我试图用NSManagedObject类做类似的事情,但它没有给出使用下划线(_)的选项:
-(void)setHasNewData:(NSNumber *)hasNewData { // update self.modifiyDate _hasNewData = hasNewData; }
给我一个错误,并建议我将_hasNewData替换为hasNewData.
这是应该怎么做或它会给我一个无限循环?
我想让它在我设置hasNewData的任何时候更新NSManagedObject的属性modifyDate.
如果_sortBy是实例变量,那么“常规类”的第一个示例就有效备份sortBy属性(例如,默认的合成实例变量)
那个属性).
但Core Data属性不由实例变量备份.
覆盖核心数据访问器时,必须使用“原始访问器”,
并触发键值观察通知:
-(void)setHasNewData:(NSNumber *)hasNewData { [self willChangeValueForKey:@"hasNewData"]; [self setPrimitiveValue:hasNewData forKey:@"hasNewData"]; [self didChangeValueForKey:@"hasNewData"]; // do other things, e.g. self.modifyDate = ...; }
更多示例可以在“核心数据编程指南”中找到.