2011-01-10 16 views
12

NSMutableArrayにNSMutableParserを使用してNSMutableString値を入力しました。Objective-C:文字列とif()値の比較が[NSMutableArray objectatindex:]にありません

私はobjectatindexメソッドで配列から結果を正常に取得できますが、if()構造体でその値をコンパクトしようとすると動作しませんが、NSLogは正しい値を返したことを示します。 HERESにログウィンドウに自分のコードおよび出力:

int Total = 0; 
int Adet = 0; 
int LPGvolume = 0; 
for(int i = 0;i<[yakitArray count];i++) 
{ 
    NSMutableString *yakitVal = [NSMutableString stringWithFormat:@"%@",[yakitArray objectAtIndex:i]]; 
    NSLog(@"Yakitval: %@",yakitVal); 
    if(yakitVal != @"LPG") 
    { 
     NSMutableString *volumeVal = [volumeArray objectAtIndex:i]; 
     Total = Total + [volumeVal integerValue]; 
    } 
    else 
    { 
     NSLog(@"LPG Found!"); 
     NSMutableString *volumeVal = [volumeArray objectAtIndex:i]; 
     LPGvolume = [volumeVal integerValue]; 
    } 
    NSMutableString *adetVal = [adetArray objectAtIndex:i]; 
    Adet = Adet + [adetVal integerValue]; 
} 

そして相続人はコンソール出力:

2011-01-10 16:58:10.885 iStationTouch3[39393:7907] Yakitval: Value1 
2011-01-10 16:58:10.886 iStationTouch3[39393:7907] Yakitval: Value2 
2011-01-10 16:58:10.886 iStationTouch3[39393:7907] Yakitval: LPG 
2011-01-10 16:58:10.887 iStationTouch3[39393:7907] Yakitval: Value3 
2011-01-10 16:58:10.888 iStationTouch3[39393:7907] Yakitval: Value4 
2011-01-10 16:58:10.889 iStationTouch3[39393:7907] Yakitval: Value5 

でもi「はyakitVal」の値は、コンソールウィンドウからLPGであることが確認でき、プログラムが入り込むことはありません'Else'セクション。

多分、私はあまりにも単純な解決策を見て疲れていますが、私はこれに固執しています。助けてください!!。

答えて

38

==!=の文字列を比較することはできません。技術的には、それはポインタと比較するだけで、あなたがしたい値ではありません。

代わりにあなたが何かしたい:

if (! [yakitVal isEqualToString:@"LPG"]) { 
5

は==またはない、文字列値を比較すること

if (![yakitVal isEqualToString:@"LPG"]) 
{ 
... 
} 

を使用してみてください!=。

EDIT:条件付きを否定します。

1

はあなたの答えをみんなに感謝し、プログラムは最終的に私が望んでいたとして実行されています。

私のyakitvalには、最後に改行文字が付いていることもわかりました。これを仕事に追加しました

yakitVal = [yakitVal stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];