Подтвердить что ты не робот

Objective-C: Сравнение строки с значениями if() не работает в [NSMutableArray objectatindex:]

Я заполнил NSMutableArray с значениями NSMutableString в моей программе, используя NSXML Parser.

i может успешно получить результаты из массива с помощью метода 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];
}

И Heres 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

даже я вижу, что значение "yakitVal" является LPG из окна консоли, программа никогда не попадает в раздел "Else".

Может быть, я слишком устал, чтобы увидеть это простое решение, но я застрял в этом. пожалуйста помоги!!.

4b9b3361

Ответ 1

Вы не можете сравнивать строки с == и !=. Технически это будет просто сравнивать указатели, а не значения, которые вы хотите сделать.

Вместо этого вы хотите что-то вроде:

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

Ответ 2

Попробуйте использовать

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

для сравнения строковых значений, а не == или! =.

EDIT: Отключено условное.

Ответ 3

Спасибо, ребята, за ответы, программа, наконец, работает, как мне хотелось.

я также понял, что мой yakitval имел новую строку char в конце этого. поэтому я добавил это, как работать

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