Ответ 1
Вы не можете сравнивать строки с ==
и !=
. Технически это будет просто сравнивать указатели, а не значения, которые вы хотите сделать.
Вместо этого вы хотите что-то вроде:
if (! [yakitVal isEqualToString:@"LPG"]) {
Я заполнил 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".
Может быть, я слишком устал, чтобы увидеть это простое решение, но я застрял в этом. пожалуйста помоги!!.
Вы не можете сравнивать строки с ==
и !=
. Технически это будет просто сравнивать указатели, а не значения, которые вы хотите сделать.
Вместо этого вы хотите что-то вроде:
if (! [yakitVal isEqualToString:@"LPG"]) {
Попробуйте использовать
if (![yakitVal isEqualToString:@"LPG"])
{
...
}
для сравнения строковых значений, а не == или! =.
EDIT: Отключено условное.
Спасибо, ребята, за ответы, программа, наконец, работает, как мне хотелось.
я также понял, что мой yakitval имел новую строку char в конце этого. поэтому я добавил это, как работать
yakitVal = [yakitVal stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];