2010-12-03 32 views
0

Je travaille sur une application pour iPhone qui utilise des URL et je rencontre des difficultés pour les ajouter à leur fin. J'ai la ligne de code suivanteProblème de casting d'un int en tant que NSString

 NSURL *urlCards = [[NSURL alloc] initWithString:(@"http://website.edu/get_stuff/%@",[NSString stringWithFormat:@"%d",_stuffID])]; 

que je dois simplement être un int annexant à la fin. Lorsque j'imprime les résultats des urlCards NSURL, j'obtiens simplement la valeur de l'int que je passe, ou la valeur de _deckID.

J'ai vérifié que le _deckID qui est déclaré simplement comme un int local a en effet la valeur correcte à l'exécution.

Qu'est-ce qui me manque?

Merci!

Répondre

1

Ce que vous avez rencontré est l'opérateur virgule. L'opérateur virgule évalue chacun de ses opérandes pour leurs effets secondaires et évalue le résultat de la dernière expression. Par exemple:

int i; 
int j; 
int z; 

z = (i = 4, j = 3, i + j); 
// z is now 7 

Qu'est-ce que vous avez ici:

(@"http://website.edu/get_stuff/%@",[NSString stringWithFormat:@"%d",_stuffID]) 

Évalue juste

[NSString stringWithFormat:@"%d", _stuffID] 

En effet, la première partie @"..." est une expression qui n'a pas d'effets secondaires, et le résultat de l'opérateur virgule est le résultat de la méthode [NSString stringWithFormat:].

Ce que vous recherchez Je pense, il ceci:

NSString *urlString = [NSString stringWithFormat:@"http://website.edu/get_stuff/%d",_stuffID]; 
NSURL *urlCards = [[NSURL alloc] initWithString:urlString]; 

Vous pouvez aussi le faire en une ligne, comme la réponse de KingofBliss.

0

Y u ne peux pas essayer comme ça,

NSURL *urlCards = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"http://website.edu/get_stuff/%d",_stuffID]]; 
0
NSString *urlString=[NSString stringWithFormat:@"http://website.edu/get_stuff/%d",_stuffID]; 
NSURL *urlCards = [[NSURL alloc] initWithString:urlString]; 

utiliser ce qu'il résout votre problème.