dreampowder
dreampowder

Reputation: 1653

Objective-C: Comparing string with if() values doesnt work on [NSMutableArray objectatindex:]

i've populated a NSMutableArray with NSMutableString Values in my program using NSXML Parser.

i can succesfully fetch results from the array with objectatindex method, but when i try to compoare that value in an if() structure, it doesnt work, but NSLog shows it has returned the correct value. heres my code and output on Log Window:

 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];
}

And Heres the Console Output:

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

even i can see that 'yakitVal' value is LPG from the console window, program never gets into the 'Else' section.

Maybe i am too tired to see that simple solution but im stuck with this. please help!!.

Upvotes: 12

Views: 29036

Answers (3)

trojanfoe
trojanfoe

Reputation: 122391

Try using

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

to compare the string values, not == or !=.

EDIT: Negated the conditional.

Upvotes: 5

dreampowder
dreampowder

Reputation: 1653

Thank you guys for the answers, program is finally running as i wanted.

i also realized that my yakitval had a new line char at the end of it. so i've added this like to work

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

Upvotes: 1

Stephen Darlington
Stephen Darlington

Reputation: 52565

You can't compare strings with == and !=. Technically, that will just compare the pointers and not the values, which is what you want to do.

Instead you want something like:

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

Upvotes: 38

Related Questions