将int转换为NSString时出现问题

时间:2010-12-03 04:29:17

标签: iphone nsstring append nsurl stringwithformat

我正在使用一个使用一些网址的iPhone应用程序,我遇到了困难,在它们的末尾添加了一些内容。我有以下代码行

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

我需要简单地将一个int附加到末尾。当我打印出NSURL urlCards的结果时,我只是得到我传入的int的值,或者_deckID的值。

我已经验证了仅仅声明为本地int的_deckID确实在运行时具有正确的值。

我错过了什么?

谢谢!

3 个答案:

答案 0 :(得分: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的回答。

答案 1 :(得分:0)

为什么你不能这样做:

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

答案 2 :(得分:0)

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

使用它可以解决您的问题。