Objective-C:将字符串与if()值进行比较对[NSMutableArray objectatindex:]不起作用

时间:2011-01-10 15:11:13

标签: objective-c xcode nsmutablearray

我使用NSXML Parser在我的程序中填充了NSMutableArray和NSMutableString值。

我可以使用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'部分。

也许我太累了,看不到这个简单的解决方案,但我坚持这个。请帮忙!!。

3 个答案:

答案 0 :(得分:38)

您无法将字符串与==!=进行比较。从技术上讲,这只是比较指针而不是值,这是你想要做的。

相反,你需要像:

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

答案 1 :(得分:5)

尝试使用

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

比较字符串值,而不是==或!=。

编辑:否定条件。

答案 2 :(得分:1)

谢谢你们的答案,程序终于按照我的意愿运行了。

我也意识到我的yakitval在它的末尾有一个新的行字符。所以我添加了这个就像工作一样

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