在if条件中调用数组元素时出错?

时间:2012-05-30 13:56:43

标签: ios xcode

当我调用if if条件时,if中的条件不会被执行。 用于调用元素的代码

if([NSNumber numberWithFloat:(([[[shared instance].y objectAtIndex:0] floatValue]))>10])
{
 [MONObject sharedInstance1[.counterPlus++;  //counter used to update the value
}

计数器值是否会更新,无论内部情况如何?这是从数组中获取元素并进行比较的方法吗?

注意:我创建了一个单音阵列! 请帮帮我!

3 个答案:

答案 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++;