запуск Safari из приложения с использованием URL-адреса, хранящегося в массиве - PullRequest
0 голосов
/ 26 января 2012

Это кнопка, при нажатии которой открывается Safari.

-(IBAction)loginClicked:(id)sender{
NSLog(@"loginClicked");

NSLog(@"currentSelectedRow = %i", currentSelectedRow );

loginObj = [appDelegate.loginArray objectAtIndex:currentSelectedRow];
NSLog(@"URL = %@", loginObj.loginURL);

Error-->[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"%@", loginObj.loginURL]];

}

Ошибка: Too many arguments to method call, expected 1, have 27

Если я заменим [[UIApplication sharedApplication] на

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"www.google.com"]];

Safari может быть запущен и перейдет на Google и мой отладчик показывает следующее

2012-01-26 16:04:15.546 Login2[197:707] loginClicked
2012-01-26 16:04:15.550 Login2[197:707] currentSelectedRow = 0
2012-01-26 16:04:15.555 Login2[197:707] URL = www.amazon.com

Кажется, я правильно вытащил URL из своего массива, но не могу внедрить его в код для открытия URL в Safari.

Ответы [ 2 ]

1 голос
/ 26 января 2012

Проблема в том, что вы пытаетесь передать параметры форматирования в

[NSURL URLWithString:]

Но метод URLWithString не принимает параметры форматирования - не каждый метод, принимающий строку в iOS, работает как [NSSString stringWithFormat:] или NSLog().

Как правило, хорошая подсказка заключается в том, что метод будет называться somethingWithFormat: вместо somethingWithString:, если он принимает параметры форматирования. Вы должны предположить, что методы с именем somethingWithString: не принимают аргументы форматирования.

Чтобы исправить ваш код, разбейте его на два вызова:

NSString *urlString = [NSSString stringWithFormat:@"%@", loginObj.loginURL];
NSURL *url = [NSURL URLWithString:urlsString];

Хотя если подумать, я не уверен, почему вы просто не пишете:

NSURL *url = [NSURL URLWithString:loginObj.loginURL];

Так как вы на самом деле ничего не делаете со строкой форматирования, за исключением выделения первого аргумента.

1 голос
/ 26 января 2012
Error-->[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"%@", loginObj.loginURL]];  //Edit this line as
Correct-->[[UIApplication sharedApplication] openURL:[NSURL URLWithString:loginObj.loginURL]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...