Task
是NSManagedObject
后代。它有一个ivar checked
。 checked
是NSNumber
的类型,它包含BOOL
值。布尔值自定义访问器
工作访问:
BOOL chcecked = [task.checked boolValue];
task.checked = [NSNumber numberWithBool:YES];
但我想somethink这样的:
BOOL checked = task.checked;
task.checked = YES;
所以,我没有用类原始存取:
@interface Task (PrimitiveAccessors)
- (void)setChecked:(BOOL)checked;
- (BOOL)checked;
@end
@implementation Task (PrimitiveAccessors)
- (void)setChecked:(BOOL)checked
{
[self willChangeValueForKey:@"checked"];
self.checked = [NSNumber numberWithBool:checked];
[self didChangeValueForKey:@"checked"];
}
- (BOOL)checked
{
[self willAccessValueForKey:@"checked"];
BOOL returnValue = [self.checked boolValue];
[self didAccessValueForKey:@"checked"];
return returnValue;
}
@end
但它不工作..我试过BOOL checked = task.checked;
和BOOL chcecked = [task checked];
。它仍然崩溃。哪里不对?谢谢。
嗯......我希望它会覆盖自动生成的访问器。您的解决方案不像我想要的那么甜蜜,但如果这只是方法,那么比谢谢! – user500
你可能可以直接使用你的代码,但用'self.checked'代替'[self primitiveChecked]',它应该可以正常工作。我只是不喜欢重写自动访问器。 – sbooth