1

在这行代码中,我正在反转一个BOOL值:

 someObject.boolValue = ![someObject boolValue];

如何在没有点语法的情况下用“纯”Objective-C 语法重写这一行?

4

3 回答 3

3

采用

[someObject setBoolValue:!([someObject boolValue])];
于 2012-12-10T16:58:06.390 回答
2

[someObject setBoolValue:![someObject boolValue]];

于 2012-12-10T16:57:20.293 回答
1

始终使用 NSNumber 来避免您的 BOOL 设置为非布尔(大于一个)值。

NSNumber * currValue = [NSNumber numberWithBOOL:[someObject boolValue]];
NSNumber * yesNum = [NSNumber numberWithBOOL:YES];
NSNumber * noNum = [NSNumber numberWithBOOL:NO];

if( NSOrderedSame == [currValue compare:yesNum] ){
    [someObject setBoolValue:[noNum boolValue]];
}
else if( NSOrderedSame == [currValue compare:noNum] ){
    [someObject setBoolValue:[yesNum boolValue]];
}
else {
    // Set default
    [someObject setBoolValue:[yesNum boolValue]];
}
于 2012-12-10T19:45:40.413 回答