dre*_*ish 3 boolean objective-c nsnumber
我有一个带有NSNumber的托管对象,它只是一个布尔值.当用户单击按钮时,我想切换它.
self.item.completed = [NSNumber numberWithBool:![self.item.completed boolValue]];
Run Code Online (Sandbox Code Playgroud)
我缺少一种更干净(或者可能更紧凑)的方式吗?
您可以对产生否定值的过程做很少的事情,但是通过将代码隐藏在类别中,您可以使调用它的语法看起来不那么笨重:
@interface NSNumber ( NegateBoolean )
-(NSNumber)negateBool;
@end
@implementation NSNumber ( NegateBoolean )
-(NSNumber)negateBool{
return [NSNumber numberWithBool:![self boolValue]];
}
@end
Run Code Online (Sandbox Code Playgroud)
现在你可以使用这样的新方法:
self.item.completed = [self.item.completed negateBool];
Run Code Online (Sandbox Code Playgroud)
您还可以设置NSArray反转,并按如下方式使用它:
NSArray *inversions = [NSArray arrayWithObjects:[NSNumber numberWithBool:YES], [NSNumber numberWithBool:NO], nil];
self.item.completed = [inversions objectAtIndex:[self.item.completed boolValue]];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1321 次 |
| 最近记录: |