因此在常规类中,您可以覆盖类属性的 setter 方法:
-(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 = ...;
}
更多示例可以在《核心数据编程指南》中找到。
关于ios - NSManagedObject 类并创建一个 Setter 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17955383/