2011-01-10 8 views
12

Wprowadziłem wartość NSMutableArray z wartościami NSMutableString w moim programie przy użyciu analizatora NSXML.Objective-C: Porównywanie łańcucha znaków z wartościami if() nie działa w obiekcie [NSMutableArray objectatindex:]

Mogę pomyślnie pobrać wyniki z tablicy przy użyciu metody objectatindex, ale kiedy próbuję skompilować tę wartość w strukturze if(), nie działa, ale NSLog pokazuje, że zwróciła poprawną wartość. heres mojego kodu i wyjście na 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]; 
} 

I Herezje wyjścia konsoli:

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 

nawet widzę, że wartość 'yakitVal' jest LPG z okna konsoli nigdy Program dostaje się Sekcja "Else".

Może jestem zbyt zmęczony, aby zobaczyć to proste rozwiązanie, ale utknąłem z tym. proszę pomóż!!.

Odpowiedz

38

Nie można porównywać ciągów znaków z == i !=. Technicznie, to wystarczy porównać wskaźniki , a nie wartości, które chcesz wykonać.

Zamiast chcesz coś takiego:

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

spróbuj

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

porównać wartości ciągów, nie == lub! =.

EDYTOWANIE: Sprzeciwiał się warunkowi.

1

Dziękuję chłopaki za odpowiedzi, program jest w końcu działa jak chciałem.

Uświadomiłem sobie również, że mój yakitval miał na końcu nowy znak linii. więc dodałem to lubię do pracy:

yakitVal = [yakitVal stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
Powiązane problemy