2011-01-10 11 views
12

he llenado un NSMutableArray con NSMutableString Values ​​en mi programa utilizando NSXML Parser.Objetivo-C: Comparar cadena con valores if() no funciona en [NSMutableArray objectatindex:]

Puedo obtener resultados con éxito de la matriz con el método objectatindex, pero cuando intento componer ese valor en una estructura if(), no funciona, pero NSLog muestra que ha devuelto el valor correcto. aquí está mi código y salida en la ventana de registro:

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

y aquí la consola de salida:

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 

siquiera puedo ver que el valor 'yakitVal' es el GLP desde la ventana de la consola, programa nunca se mete en el Sección 'Else'.

Quizás estoy demasiado cansado para ver esa solución simple pero estoy atascado con esto. ¡¡por favor ayuda!!.

Respuesta

38

No puede comparar cadenas con == y !=. Técnicamente, eso solo comparará los punteros y no los valores, que es lo que desea hacer.

el contrario desea algo como:

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

trate de usar

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

para comparar los valores de cadena, no == o! =.

EDIT: Negó el condicional.

1

las gracias por las respuestas, por último programa se ejecuta como yo quería.

También me di cuenta de que mi yakitval tenía una nueva línea de caracteres al final. entonces he agregado esto como para trabajar

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