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