当我调用if if条件时,if中的条件不会被执行。 用于调用元素的代码
if([NSNumber numberWithFloat:(([[[shared instance].y objectAtIndex:0] floatValue]))>10])
{
[MONObject sharedInstance1[.counterPlus++; //counter used to update the value
}
计数器值是否会更新,无论内部情况如何?这是从数组中获取元素并进行比较的方法吗?
注意:我创建了一个单音阵列! 请帮帮我!
答案 0 :(得分:2)
不要尝试将所有内容都塞进一个语句中 - 这是一种糟糕的编码风格,难以调试(如您所见)并且难以维护。使用一些中间变量,这样你就可以看到发生了什么。
条件始终为真的原因是你的if语句归结为:
if ([NSNumber numberWithFloat: <something>])...
-[NSNumber numberWithFloat:]
总是如此 - 实际上任何对象总是等于true。所以即使[NSNumber numberWithBool: NO]
也是如此。
如果您只想检查您的值是否大于10(假设您的数组包含NSNumber
s),则需要:
NSNumber * someNumber = [[shared instance].y objectAtIndex:0];
if([someNumber floatValue] > 10)
{
[MONObject sharedInstance1[.counterPlus++; //counter used to update the value
}
答案 1 :(得分:1)
解码完所有括号后,您似乎正在测试是否正在创建NSNumber对象。
答案 2 :(得分:1)
如果这是您的实际代码,则您有一个向后支架......
[MONObject sharedInstance1[.counterPlus++;
应该是
[MONObject sharedInstance1].counterPlus++;