2009-11-11 79 views
0

我在测试iPhone0应用程序中有一个按钮,它根据URL中的GET ID打开StackOverflow问题。每次按下按钮,页面都应该重新加载到下一个问题。NSString中的OBJC_MSGSEND错误stringWithFormat

我通过最初设置为1的int count保持GET ID的计数,并且每按下一次按钮就增加一次。

硬编码使用的网址:NSString *urlAddress=[NSString stringWithFormat:@"http://stackoverflow.com/questions/1"];

作品,但显然不允许使用计数器。当我试着使用来实现计数器:

NSString *urlAddress =[NSString stringWithFormat: @"http://stackoverflow.com/questions/%@", count]; 

程序无法与OBJC_MSGSEND错误。为什么这行代码不起作用?

*我已调试,这是导致所述错误的第一行。

谢谢。

回答

4

count不是一个对象。您需要使用%d,而不是%@。使用%@作为格式说明符意味着“发送一个description方法到我作为参数提供的对象”。由于变量count实际上不是一个对象,因此无法向其发送任何消息。

您的代码(简称显示的例子更好),看起来是这样的:

NSString *s = [NSString stringWithFormat:@"something/%@", count]; 

这是(几乎)等价于:

NSString *s = [NSString stringWithFormat:@"something/%@", [count description]]; 

正如你可以想像,在运行时(count毕竟是int)。使用这种格式将工作:

NSString *s = [NSString stringWithFormat:@"something/%d", count];