我有一个小问题,对我来说似乎有些奇怪。我经常使用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就像我上面那样工作。
最好的问候
答案 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];