2011-01-10 66 views
12

我已經在我的程序中使用NSXML分析器填充NSMutableString值與NSMutableArray。Objective-C:比較字符串與if()值不工作[NSMutableArray objectatindex:]

我可以使用objectatindex方法成功從數組中取出結果,但是當我嘗試在if()結構中組合該值時,它不起作用,但NSLog顯示它已返回正確的值。繼承人我的代碼和輸出的日誌窗口:

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 

甚至我可以看到,「yakitVal」值從控制檯窗口LPG,節目永遠不會進入'Else'部分。

也許我太累了,看不到這個簡單的解決方案,但我堅持這一點。請幫忙!!。

回答

38

您無法將字符串與==!=進行比較。從技術上講,這只是比較指針而不是值,這是你想要做的。

相反,你想要的東西,如:

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

嘗試使用

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

字符串值進行比較,而不是==或!=。

編輯:取消條件。

1

謝謝你們的答案,方案終於運行,因爲我想要的。

我也意識到我的yakitval在它的最後有一個新的char字符。所以我已經加入了喜歡的工作

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