Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

xcode iOS compare strings

Tags:

xcode

ios

How do i compare a website result with a predicted result.

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

is predicted to contain:

<body>OK</body> 

But i always get an error saying that they don't match. I used this code below to compare them:

if (webresult == cmp){ 

then it shows an alert saying success. Or in else it'll say error. It always goes to else. Heres the code block, Please help.

- (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]; } } 
like image 732
Tyler McMaster Avatar asked Aug 04 '11 04:08

Tyler McMaster


People also ask

Can you compare strings in Swift?

Comparing Strings. Swift provides three ways to compare textual values: string and character equality, prefix equality, and suffix equality.

How do you find the difference between two strings in Swift?

In Swift, we can compare two string whether they are equal or not using = = operator.

How do you check if two strings are the same in Swift?

To check if two strings are equal in Swift, use equal to operator == with the two strings as operands. The equal to operator returns true if both the strings are equal or false if the strings are not equal.

How do I compare characters in Swift?

In Swift, you can check for string and character equality with the "equal to" operator ( == ) and "not equal to" operator ( != ).


2 Answers

I assume that webresult is an NSString. If that is the case, then you want to use:

if ([webresult isEqualToString:cmp]) { 

instead of:

if (webresult == cmp) { 

as the above method checks if the strings are equal character by character, whereas the bottom method checks if the two strings are the same pointer. Hope that helps!

like image 76
msgambel Avatar answered Oct 11 '22 02:10

msgambel


if (webresult == cmp) 

Here, == checks whether webresult, cmp are pointing to the same reference or not. You should instead compare value of the object by using NSString::isEqualToString.

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

Note that isEqualToString is a good option because it returns boolean value.

like image 27
Mahesh Avatar answered Oct 11 '22 01:10

Mahesh