Le numéro que vous stockez déjà est sous la forme d'une chaîne (notez les guillemets: @ "...").
Ce que vous voulez probablement est quelque chose comme ceci:
NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInteger:1100], @"myKey",nil];
NSString *myData = [NSString stringWithFormat:@"%d", [[myDict objectForKey:@"myKey"] integerValue]];
Nous allons passer par cette étape de code par étape:
- Nous créons un objet NSNumber tenant 1100 par
[NSNumber numberWithInteger:1100]
- Nous créons une NSDictionary objet avec ledit objet numéro en tant que valeur pour la clé
@"myKey"
- Nous demande la valeur pour la clé
@"myKey"
de myDict
via [myDict objectForKey:@"myKey"]
, ce qui renverra l'instance NSNumber que nous lui avons passée précédemment.
- Nous demandons alors la valeur entière (NSInteger, qui est une abstraction autour int/long) de l'instance NSNumber reçu par
[… integerValue]
- Nous passons la valeur NSInteger à
[NSString stringWithFormat:@"%d", …]
Sinon, vous pouvez sauter l'étape 4 et changez @ "% d" en @ "% @", qui imprimera la même chose. En cas de valeurs entières simples au moins. Pour les valeurs à virgule flottante, vous ne voudrez pas imprimer NSNumbers directement via @ "% @" car vous perdriez le contrôle de l'affichage de la précision décimale.
Notez que nous utilisons objectForKey:
, pas valueForKey:
, voici pourquoi: https://stackoverflow.com/search?q=valueForKey%20objectForKey
Vous pourriez avoir fait la même chaîne en changeant votre code à ceci:
NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:@"1100", @"myKey",nil];
NSString *myData = [NSString stringWithFormat:@"%@", [myDict objectForKey:@"myKey"]];
La raison cependant, pourquoi ne pas vouloir faire ceci: Il est (en général) une mauvaise habitude de stocker des valeurs numériques ** (ou à peu près toutes les autres non-textuelles) comme des chaînes **.