2011-01-10 6 views
12

Ich habe ein NSMutableArray mit NSMutableString-Werten in meinem Programm mit dem NSXML-Parser gefüllt.Objective-C: Vergleichen von Zeichenfolgen mit if() Werten funktioniert nicht in [NSMutableArray objectatindex:]

Ich kann erfolgreich Ergebnisse aus dem Array mit objectatindex-Methode abrufen, aber wenn ich versuche, diesen Wert in einer if() - Struktur zu kompilieren, funktioniert es nicht, aber NSLog zeigt, dass es den richtigen Wert zurückgegeben hat. her mein Code und Ausgabe auf Protokollfenstern:

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

Und Heres die Konsolenausgabe:

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 

selbst kann ich sehen, dass ‚yakitVal‘ Wert LPG aus dem Konsolenfenster ist, Programm wird nie in die 'Else' Abschnitt.

Vielleicht bin ich zu müde, um diese einfache Lösung zu sehen, aber ich bleibe dabei. bitte hilf !!

Antwort

38

Sie können Zeichenfolgen nicht mit == und != vergleichen. Technisch vergleicht das nur die Zeiger und nicht die Werte, was Sie tun möchten.

Stattdessen wollen Sie so etwas wie:

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

Ausprobieren

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

unter Verwendung der Zeichenfolge-Werte zu vergleichen, nicht == oder! =.

BEARBEITEN: Negiert die Bedingung.

1

Danke Jungs für die Antworten, Programm schließlich läuft, wie ich wollte.

Ich erkannte auch, dass mein Yakitval eine neue Zeile Char am Ende hatte. also ich habe das hinzugefügt, um zu arbeiten

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