这就是我在公共方法中所拥有的 - (IBAction)methodName
NSString *quoteNumber = [[self textBox] text];
NSURL *url = [[NSURL alloc] initWithString:@"http://TestSite.com/virdirectory/Webservice1/Service1.asmx/GetQuote?number=%d", quoteNumber];
我得到的错误是:
方法调用的参数太多,预期为1,有2
我做错了什么?
答案 0 :(得分:1)
您需要格式化字符串。试试这个:
NSString *urlString = [NSString stringWithFormat:@"http://TestSite.com/virdirectory/Webservice1/Service1.asmx/GetQuote?number=%@", quoteNumber];
NSURL *url = [[NSURL alloc] initWithString:urlString];
答案 1 :(得分:1)
我认为您正在考虑NSString的stringWithFormat:
:
[NSURL URLWithString:[NSString stringWithFormat:@"http://TestSite.com/virdirectory/Webservice1/Service1.asmx/GetQuote?number=%@", quoteNumber]]
另请注意格式说明符对%@的更改,因为它是NSString的实例(不是int)
答案 2 :(得分:0)
问题是
[NSURL initWithString:]
需要一个NSString类型的参数,但你传递了两个参数。
您需要传递一个NSString参数。从
更改您的代码NSURL *url = [[NSURL alloc] initWithString:@"http://TestSite.com/virdirectory/Webservice1/Service1.asmx/GetQuote?number=%d", quoteNumber];
到
NSURL *url = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"http://TestSite.com/virdirectory/Webservice1/Service1.asmx/GetQuote?number=%d", quoteNumber]];
答案 3 :(得分:0)
initWithString
方法只能接受普通的NSString,你传递格式化的NSString,看看这段代码:
NSURL *url = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"http://TestSite.com/virdirectory/Webservice1/Service1.asmx/GetQuote?number=%d", quotedNumber]];
这可能有点令人困惑,您可以按照以下方式进行分解:
NSString *urlString = [NSString stringWithFormat:@"http://TestSite.com/virdirectory/Webservice1/Service1.asmx/GetQuote?number=%d", quotedNumber];
NSURL *url = [[NSURL alloc] initWithString:urlString];
现在您的字符串已正确格式化,NSURL initWithString
方法将起作用!
此外,为了将来您更清楚,您可以在设置quoteNumber
字符串时利用Objective-C的点表示法语法,如下所示:
NSString *quoteNumber = self.textBox.text;
此外,您尝试将此引号作为数字传递到urlString
(如%d
所示),请记住quotedNumber
是NSString对象,并且会崩溃当您尝试将其传递给stringWithFormat
方法时。您必须首先将字符串转换为NSInteger或NSUInteger。
请参考this SO question如何做到这一点(不要担心这很容易)!