-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

すべてを1つのステートメントに詰め込もうとしないでください。これはひどいコーディングスタイルであり、デバッグが難しく(あなたが見つけたように)、維持するのがひどいです。何が起こっているかを確認できるように、いくつかの中間変数を使用します。

条件が常に真である理由は、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

すべての角かっこをデコードすると、NSNumberオブジェクトが作成されているかどうかをテストしているように見えます。

于 2012-05-30T14:11:51.293 に答える
1

それが実際のコードである場合は、後方ブラケットがあります...

[MONObject sharedInstance1[.counterPlus++;

する必要があります

[MONObject sharedInstance1].counterPlus++;
于 2012-05-30T14:37:21.267 に答える