2011-08-04 10 views
33

¿Cómo comparo consecuencia página web con un resultado predicho.iOS Xcode comparan cadenas

@"document.getElementsByTagName('body')[0].outerHTML" 

se prevé que contienen:

<body>OK</body> 

pero siempre me sale un error diciendo que no coinciden. Usé este código a continuación para compararlos:

if (webresult == cmp){ 

y muestra una alerta que dice éxito. O en otro caso dirá error. Siempre va a otra cosa. Aquí está el bloque de código, por favor ayuda.

- (IBAction)displayresult:(id)sender { 
    webresult = [webview2 stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].outerHTML"]; 
    NSString *cmp = [[NSString alloc] initWithFormat:@"<body>OK</body>"]; 

    if (webresult == cmp) { 

     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Logged in" message:@"Logged in, Proceeding to the game" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
     [alert show]; 
     [alert release]; 
    } else { 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:webresult delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
    [alert show]; 
    [alert release]; 
} 
} 

Respuesta

101

que asumen que webresult es un NSString. Si ese es el caso, entonces usted desea utilizar:

if ([webresult isEqualToString:cmp]) { 

en lugar de:

if (webresult == cmp) { 

como el método comprueba anteriores si las cadenas son iguales carácter por carácter, mientras que el método comprueba de fondo si la dos cadenas son el mismo puntero. ¡Espero que ayude!

+0

Gracias, eso lo solucionó –

+0

¡Genial! ¿Puedes aceptar la respuesta entonces? – msgambel

8
if (webresult == cmp) 

Aquí, == comprueba si webresult, cmp están apuntando a la misma referencia o no. En su lugar debe comparar el valor del objeto mediante el uso de NSString::isEqualToString.

if ([ cmp isEqualToString:webresult ]) { 
    // .. 
}else { 
    // .. 
} 

Tenga en cuenta que isEqualToString es una buena opción, ya que devuelve el valor booleano.

+0

¿Puedo obtener un ejemplo de cómo usar eso? –

3

No podemos comapre las cuerdas con ==
tenemos que utilizar isEqualToString:

if([str1 isEqualToString:str2]) 
{ 
} 
else 
{ 
} 
1

Al comparar cadenas es necesario utilizar isEqualToString:

if ([cmp isEqualToString:webresult]) { 
    ... 
} else { 
    ... 
} 
0

de Swift 4.0

if str1==str2{ 
    //both string are equal 
     } 

else{ 
    //do something expression not true 

    }