Почему я получаю эту ошибку, когда пытаюсь передать параметр в 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]];