0

这就是我在公共方法中所拥有的 - (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

我究竟做错了什么?

4

4 回答 4

1

您需要格式化您的字符串。尝试这个:

NSString *urlString = [NSString stringWithFormat:@"http://TestSite.com/virdirectory/Webservice1/Service1.asmx/GetQuote?number=%@", quoteNumber];
NSURL *url = [[NSURL alloc] initWithString:urlString];
于 2012-07-04T01:37:45.910 回答
1

我认为您正在考虑 NSString 的stringWithFormat:

[NSURL URLWithString:[NSString stringWithFormat:@"http://TestSite.com/virdirectory/Webservice1/Service1.asmx/GetQuote?number=%@", quoteNumber]]

还要注意格式说明符对 %@ 的更改,因为它是 NSString 的实例(不是 int)

于 2012-07-04T01:37:58.620 回答
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]];
于 2012-07-04T01:44:15.733 回答
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。

请参考这个 SO question如何做到这一点(不用担心这很容易)!

于 2012-07-04T01:45:12.550 回答