2011-08-04 22 views
33

Jak porównać wynik strony z przewidywanym wynikiem.xcode porównaj łańcuchy iOS

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

przewiduje się zawierać:

<body>OK</body> 

ale zawsze pojawia się błąd mówiący, że nie pasują do siebie. Użyłem tego kodu poniżej, aby je porównać:

if (webresult == cmp){ 

to pokazuje ostrzeżenie o sukcesie. Lub w innym razie powie błąd. Zawsze idzie do innego. Oto blok kodu, proszę o pomoc.

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

Odpowiedz

101

Zakładam, że webresult to NSString. Jeśli tak jest, to chcesz używać:

if ([webresult isEqualToString:cmp]) { 

zamiast:

if (webresult == cmp) { 

jako powyższych kontroli metodę, jeśli ciągi są równe znak po znaku, natomiast dolne kontroli metodę, jeśli dwa ciągi są tym samym wskaźnikiem. Mam nadzieję, że pomaga!

+0

Dzięki, Naprawiono to –

+0

Świetnie! Czy możesz wtedy przyjąć odpowiedź? – msgambel

8
if (webresult == cmp) 

Tutaj == sprawdza, czy webresult, cmp są skierowane do tego samego źródła lub nie. Należy zamiast porównać wartość obiektu za pomocą NSString::isEqualToString.

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

Zauważ, że isEqualToString jest dobrym rozwiązaniem, ponieważ zwraca wartość logiczną.

+0

Czy mogę uzyskać przykład, jak tego użyć? –

3

Nie możemy comapre sznurki z ==
Musimy wykorzystać isEqualToString:

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

Podczas porównywania ciągów znaków trzeba użyć isEqualToString:

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

dla Swift 4.0

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

else{ 
    //do something expression not true 

    }