想要在 iOS sdk 中反转 BOOL 值

Posted

技术标签:

【中文标题】想要在 iOS sdk 中反转 BOOL 值【英文标题】:Want to invert BOOL value in iOS sdk 【发布时间】:2012-06-08 06:48:02 【问题描述】:

我从 ios sdk 中的 plist 获取 id 值,如果我得到值 0,那么我必须将其显示为 1,反之亦然。

这是我的代码

+(BOOL) removeButton 
   id obj = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"ABC"];
   if (obj != Nil) 
      return (BOOL)obj;
  
    return YES;
 

但问题是,当 id 的值为 0 时,它会返回 No,反之亦然。但我想把我的条件放在相反的事情上,比如假设 id 的值为 0,那么我必须显示 return YES,反之亦然。

【问题讨论】:

Nil”的定义是什么?它应该是“nil”(全部小写)或“NULL”。 【参考方案1】:

您不能将id 转换为BOOL。假设它被正确存储,你从字典中取出它的方法是通过数字包装器NSNumber

NSNumber *boolWrapper = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"ABC"];
return ![boolWrapper boolValue];

这将为 1 返回 0,为 0 返回 1。

如果你只是像你正在做的那样简单地转换它,除非对象不存在(即它是nil),否则它总是正确的。

【讨论】:

【参考方案2】:

添加“!”如下:)

return !(BOOL)obj;

[编辑]

您应该使用 objectForInfoDictionaryKey this 而不是 valueForKey,如下所示:

id object = [[NSBundle mainBundle] objectForInfoDictionaryKey:"Key"];

【讨论】:

你应该使用 objectForInfoDictionaryKey this 而不是 valueForKey 如下: id object = [[NSBundle mainBundle] objectForInfoDictionaryKey:"Key"];【参考方案3】:

好的,像这样:

+(BOOL) removeButton 
   id obj = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"ABC"];
   BOOL shouldRemoveButton = N0;
   if (obj != nil) 
      shouldRemoveButton = YES;
  
    return shouldRemoveButton;
 

我不喜欢在代码中间有returns,它会让人混淆,而且不是很清楚。

【讨论】:

你好 Jack,我从 plist 中得到 0 或 1 个值,所以我只能这样做

以上是关于想要在 iOS sdk 中反转 BOOL 值的主要内容,如果未能解决你的问题,请参考以下文章

ios如何使用UIColor表示任意颜色值

反转图标从白色到黑色、工具或 iPhone sdk

请问stm32中foc库怎么切换正反转方向

如何对 XAML 绑定值执行计算:反转、相乘、减去或相加?

iPhone - 界面方向反转?

如何在 JavaScript 中反转数组,同时保留原始数组的原始值? [复制]