【发布时间】:2011-08-23 11:54:27
【问题描述】:
Task 是NSManagedObject 的后代。它有一个 ivar checked。 checked 是 NSNumber 的类型,它包装了 BOOL 值。
工作访问:
BOOL chcecked = [task.checked boolValue];
task.checked = [NSNumber numberWithBool:YES];
但我想要这样的想法:
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];。它仍然崩溃。怎么了?谢谢。
【问题讨论】:
标签: objective-c ios core-data nsmanagedobject