想要在 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 值的主要内容,如果未能解决你的问题,请参考以下文章