2010-12-03 4 views
0

Я работаю над приложением iPhone, которое использует некоторые URL-адреса, и я сталкиваюсь с трудностями, добавляя ints к концу их. У меня есть следующая строка кодаПроблема литья int как NSString

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

, что мне нужно просто добавить int в конец. Когда я распечатываю результаты NSURL urlCards, я просто получаю значение int, которое я передаю, или значение _deckID.

Я проверил, что _deckID, объявленный просто как локальный int, действительно имеет правильное значение во время выполнения.

Что мне не хватает?

Спасибо!

ответ

1

То, с чем вы столкнулись, является оператором запятой. Оператор запятой оценивает каждый из своих операндов для своих побочных эффектов и оценивает результат последнего выражения. Например:

int i; 
int j; 
int z; 

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

Что у вас здесь:

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

Оценивает только

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

Это происходит потому, что первая часть @"..." является выражением, которое не имеет побочных эффектов, и результат работы с запятой является результатом метода [NSString stringWithFormat:].

Что вы ищете Я думаю, что это:

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

Вы также можете сделать это в одной строке, как ответ KingofBliss в.

0

Y косяк у попытаться, как это,

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

использовать это решает проблему.