如何在NSURL中添加数字?参数太多错误

时间:2014-06-23 13:31:37

标签: ios objective-c nsurl

我有一个小问题,对我来说似乎有些奇怪。我经常使用NSString或NSLog,同时将NSNumbers添加到几个地方:

NSNumber *categoryId = [[NSNumber alloc]initWithInt:0];
NSURL *url = [NSURL URLWithString:@"http://shop.rs/api/json.php?action=getCategoryByCategory&category=%i",[categoryId integerValue]];

现在xcode告诉我,我的论点太多了。我究竟做错了什么?将NSNumber设置为NSStrings或NSLogs就像我上面那样工作。

最好的问候

3 个答案:

答案 0 :(得分:4)

有什么问题
NSURL *url = [NSURL URLWithString:@"http://shop.rs/api/json.php?action=getCategoryByCategory&category=%i",[categoryId integerValue]];

您正在调用URLWithString:,然后传入未正确格式化的字符串。如果你想在一行上完成所有操作,那么你需要使用stringWithFormat:之类的

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://shop.rs/api/json.php?action=getCategoryByCategory&category=%i",[categoryId integerValue]]];

因为它正在添加参数,所以您不能像@"some text"那样创建字符串,而是需要使用stringWithFormat:格式化它,这将返回NSString *保留在@""内的文字以及您传入的参数。因此[NSString stringWithFormat:@"My String will come with %@", @"Apples"];这将提供NSString "My String will come with Apples"。有关更多信息,请查看Apple Documentation for NSString and stringWithFormat:

答案 1 :(得分:2)

试试这个:

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://shop.rs/api/json.phpaction=getCategoryByCategory&category=%i", [categoryId integerValue]]];

最初代码错误是因为:" categoryId integerValue]" (我忘记了' [')。

答案 2 :(得分:1)

您可以使用NSString来构建NSURL。然后,您可以将其传递给URLWithString,如下所示:

NSNumber *categoryId = [NSNumber numberWithInteger:0]; 
NSString *urlString = [NSString stringWithFormat:@"http://shop.rs/api/json.php?action=getCategoryByCategory&category=%i",[categoryId integerValue]];
NSURL *url = [NSURL URLWithString:urlString];