2011-04-15 6 views
3

J'ai un test isEqualToString simple dans mon application, et pour une raison quelconque, il prend toujours le faux chemin de l'instruction if, même si la console montre qu'elle devrait prendre le vrai chemin .iPhone/iOS isEqualToString retourne toujours false

Voici le code qui est en question:

- (void)requestFailed:(ASIHTTPRequest *)request 
{ 
    NSError *error = [request error]; 

    NSLog(@"Program requestFailed with error '%@' and reason '%@'", [error localizedDescription], [error localizedFailureReason]); 

    NSString *errorMessage = [NSString stringWithFormat:@"%@",[error localizedDescription]]; 
    if ([[error localizedFailureReason] isEqualToString:@"(null)"]) 
    { 
    } 
    else 
    { 
     errorMessage = [errorMessage stringByAppendingFormat:@"\nReason: %@", [error localizedFailureReason]]; 
    } 

    [Utils msgBox:@"Error with Data Download" message:errorMessage]; 
} 

Et dans la console:

2011-04-15 14:27:07.341 Program[79087:207] Program requestFailed with error 'The request timed out' and reason '(null)' 
2011-04-15 14:27:07.341 Program[79087:207] Displaying a message box with title 'Error with Data Download' and message 'The request timed out 
Reason: (null)' 

La méthode MsgBox dans ma classe Utils délivre le titre et le message à la console, qui est d'où vient la deuxième ligne.

Je regarde cela depuis un moment, et la réponse doit être si facile qu'elle échappe à l'attention. Aucune suggestion? (J'ai essayé de couper les espaces blancs au large [erreur localiséeDescription], en vain.) Je suis sur le dernier 4.3 iOS SDK.

Répondre

5

La chaîne n'est pas égal à « (null) » la chaîne est nulle, qui lors de l'impression à la console est imprimé AS (null).

Le fait de passer à isStringEqual reviendra toujours faux.

Si vous devez vérifier zéro, comparez votre chaîne à zéro, pas "(null)".

if (error != nil) 
{ 
    errorMessage = [errorMessage stringByAppendingFormat:@"\nReason: %@", [error localizedFailureReason]]; 
} 
4

Le (null) que vous voyez dans le débogueur est la manière du débogueur de vous dire que la valeur est en fait nil. Donc, vous voudrez peut-être essayer ceci:

Questions connexes