-1

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

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

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

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

4

3 回答 3

2

不要试图把所有东西都塞进一个语句中——这是一种糟糕的编码风格,难以调试(正如你所发现的)并且难以维护。使用一些中间变量,这样你就可以看到发生了什么。

条件始终为真的原因是您的 if 语句归结为:

if ([NSNumber numberWithFloat: <something>])...

-[NSNumber numberWithFloat:]始终为真——事实上任何对象总是等同于真。所以即使[NSNumber numberWithBool: NO]是真的。

如果您只想检查您的值是否大于 10(假设您的数组包含NSNumbers),您需要:

NSNumber * someNumber = [[shared instance].y objectAtIndex:0];

if([someNumber floatValue] > 10)
{
    [MONObject sharedInstance1[.counterPlus++;  //counter used to update the value
}
于 2012-05-30T14:11:12.353 回答
1

如果那是您的实际代码,则您有一个后括号...

[MONObject sharedInstance1[.counterPlus++;

应该

[MONObject sharedInstance1].counterPlus++;
于 2012-05-30T14:37:21.267 回答
1

一旦我解码了所有括号,您似乎正在测试是否正在创建 NSNumber 对象。

于 2012-05-30T14:11:51.293 回答