Почему я получаю эту ошибку, когда пытаюсь передать параметр в NSURL в приложении iOS?

Это то, что я имею в публичном методе - (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 ответа

Решение

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 метод будет работать!

Кроме того, для ясности в будущем вы можете воспользоваться синтаксисом точечных обозначений Objective-C при установке quoteNumber строка, как показано ниже:

NSString *quoteNumber = self.textBox.text;

Кроме того, вы пытаетесь передать этот номер в свой urlString как цифра (как видно с %d), помните, что quotedNumber является объектом NSString и завершится сбоем при попытке передать его stringWithFormat метод. Вы должны сначала преобразовать строку в NSInteger или NSUInteger.

Пожалуйста, обратитесь к такому вопросу, чтобы узнать, как это сделать (не волнуйтесь, это очень просто)!

Я думаю, что вы думаете о NSString stringWithFormat::

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

Также обратите внимание на изменение%@ для спецификатора формата, так как это экземпляр NSString (не int)

Вам нужно отформатировать вашу строку. Попробуй это:

NSString *urlString = [NSString stringWithFormat:@"http://TestSite.com/virdirectory/Webservice1/Service1.asmx/GetQuote?number=%@", quoteNumber];
NSURL *url = [[NSURL alloc] initWithString:urlString];

Проблема в

[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]];
Другие вопросы по тегам