Objective-C: сравнение строки со значениями if () не работает с [NSMutableArray objectatindex:] - PullRequest
12 голосов
/ 10 января 2011

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

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

38 голосов
/ 10 января 2011

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

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

if (! [yakitVal isEqualToString:@"LPG"]) {
5 голосов
/ 10 января 2011

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

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

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

РЕДАКТИРОВАТЬ : отрицательный условный.

1 голос
/ 10 января 2011

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

Я также понял, что в моем якитвале появился новый символ строки так что я добавил это нравится работать

yakitVal = [yakitVal stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...