#ios #objective-c
#iOS #objective-c
Вопрос:
Редактировать: я понял, что было не так, но пока не могу опубликовать ответ, поскольку я новый пользователь. Я опубликую свое решение, как только смогу.
Я использую этот код для открытия ссылки в веб-браузере iPhone:
NSString *url;
NSLog(@"%d", [sender tag]);
if([sender tag] == 0)
url = [approvedDict objectForKey:@"ig"];
else if([sender tag] == 1)
url = [approvedDict objectForKey:@"yt"];
else if([sender tag] == 2)
url = [approvedDict objectForKey:@"tw"];
else if([sender tag] == 3)
url = [approvedDict objectForKey:@"pt"];
else if([sender tag] == 4)
url = [approvedDict objectForKey:@"fb"];
NSLog(@"%@", url);
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: url]];
При использовании этого кода (который является целевым действием нажатия кнопки) ничего не происходит. Однако, если я беру ТОЧНУЮ строку, заданную NSLog (@»%@», url), и помещаю ее туда, где «url» находится в последней строке, это работает. Я в тупике относительно того, что происходит; у кого-нибудь есть какие-либо подсказки? Спасибо.
Комментарии:
1. Так ли это для всех значений
url
(из вашегоapprovedDict
)?2. Да — все эти ключи являются ссылками на строки, которые являются ссылками.
3. Как мы можем помочь, не зная, что
url
содержит строка?4.
@"google.com"
не является URL-адресом. Это строка, которая выглядит как имя домена. Допустимый URL-адрес будет@"http://google.com"
.5. Ваше описание слишком расплывчато. Опубликуйте фактический блок кода с определенным URL-адресом в переменной, которая не загружается.
Ответ №1:
Если URL-адрес содержит какие-либо специальные символы, вам нужно их экранировать в процентах.
Вместо того, чтобы просто открывать URL-адрес следующим образом:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: url]];
Добавить
NSString *encodedString = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *urlToOpen = [NSURL URLWithString: encodedString];
[[UIApplication sharedApplication] openURL:urlToOpen];
Комментарии:
1. Веб-браузер открывается сейчас, но Safari никогда не сможет подключиться к серверу. Может быть, есть еще один шаг?
2. Я не знаю, можете ли вы получить ответ о том, что Safari не удалось открыть ссылку или нет. Вы уверены, что если вы откроете тот же URL вручную (например, Safari на вашем Mac), это сработает?