2012-09-09 1 views
0

j'ai ce code et des recherches sur Internet et trouvent ok mais ca marche pas avec moiCheck Dictionary avec objectForKey IsEqualToString ne fonctionne pas

NSMutableDictionary *dict = [NSMutableDictionary dictionary]; 
    ..... 
    NSLog(@"%@",[dict objectForKey:@"STATUS"]); 

    if ([[dict objectForKey:@"STATUS"] isEqualToString:@"Y"]) { 

     NSLog(@"Done"); 

    } 

Le NSLog montre Y qui devrait fonctionner avec si statment

+0

Pouvons-nous voir le code où @ « Y » est inséré dans le dictionnaire? – ryan0

+0

je les ai sur le tableau que j'ai converti à partir de la réponse POST NSData * urlData = [NSURLConnection sendSynchronousRequest: demande returnResponse: & erreur de réponse: & error]; NSString * data = [[NSString alloc] initWithData: codage urlData: NSUTF8StringEncoding]; NSArray * outputArray = [données componentsSeparatedByString: @ "\ n"]; – BoSoud

+0

puis je le convertis en dictionnaire pour (NSString * s dans outputArray) {NSArray * arr = [s componentsSeparatedByString: @ "|"]; [dict setObject: [arr objectAtIndex: 1] forKey: [arr objectAtIndex: 0]]; } J'ai NSlog le [dict objectForKey: @ "STATUS"] et montre sur la console Y – BoSoud

Répondre

3

Lorsque vous:

[dict setObject:[arr objectAtIndex:1] ... 

Je pense que cela est d'ajouter les chaînes dans le dictionnaire comme des objets. La ligne NSLog fonctionne car NSLog envoie à chaque objet passé le message "description" pour le convertir en sa valeur de chaîne. Vous pouvez faire la même chose.

essayer de le changer:

if ([[dict objectForKey:@"STATUS"] isEqualToString:@"Y"]) 

à ceci:

if ([[[dict objectForKey:@"STATUS"] description] isEqualToString:@"Y"]) 

qui obtiendrait la valeur de chaîne de l'objet retourné par objectForKey: avant de faire la comparaison.

Si vous pensez qu'il pourrait y avoir un espace blanc jeter au large de la comparer, couper la chaîne avant de comparer, comme ceci:

if ([[[dict objectForKey:@"STATUS"] stringByTrimmingCharactersInSet: 
    [NSCharacterSet whitespaceAndNewlineCharacterSet]] isEqualToString:@"Y"]) 
+0

Merci pour l'aide, mais ne fonctionne toujours pas – BoSoud

+0

Quand vous faites [s componentsSeparatedByString: @ "|"] à quoi ressemble s? Pourrait-il y avoir un espace dans la chaîne contenant Y? Essayez de changer NSLog (@ "% @", ... à NSLog (@ "->% @<-", ceci indiquerait s'il y a des espaces avant ou après Y. – ryan0

+0

NSLog show -> Y <- - est-ce beaucoup d'espace ou juste la console? – BoSoud

Questions connexes