33 votes

xcode iOS compare les chaînes

Comment comparer un résultat de site Web avec un résultat prévu.

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

est prévue pour contenir:

 <body>OK</body>
 

Mais j'ai toujours une erreur disant qu'ils ne correspondent pas. J'ai utilisé ce code ci-dessous pour les comparer:

 if (webresult == cmp){
 

puis il montre une alerte disant succès. Sinon, cela dira erreur. Il va toujours à autre. Voici le bloc de code, s'il vous plaît aider.

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

101voto

msgambel Points 5027

Je suppose que webresult est un NSString . Si tel est le cas, vous souhaitez utiliser:

 if ([webresult isEqualToString:cmp]) {
 

au lieu de:

 if (webresult == cmp) {
 

comme la méthode ci-dessus vérifie si les chaînes sont égales caractère par caractère, tandis que la méthode inférieure vérifie si les deux chaînes sont le même pointeur. J'espère que cela pourra aider!

8voto

Mahesh Points 20994
if (webresult == cmp)

Ici, == vérifie si webresult, cmp pointent vers la même référence ou pas. Il faut plutôt comparer la valeur de l'objet en utilisant NSString::isEqualToString.

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

Notez que isEqualToString est une bonne option, car il renvoie la valeur booléenne.

4voto

Madhu Points 843

Nous ne pouvons pas comapre les cordes avec ==
Nous devons utiliser isEqualToString:

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

1voto

Jaw_khan Points 4

Lorsque vous comparez des chaînes, vous devez utiliser isEqualToString:

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

-1voto

user1533983 Points 37

comment comparer une chaîne avec deux chaînes constantes en utilisant l'opérateur OR dans xcode:

 if (stringName ==(thisString OR thatString))
{
    ...
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X