UIApplication OpenUrl дважды экранирует мои URL - PullRequest
1 голос
/ 01 октября 2010

По сути, я пытаюсь запрограммировать кнопку «твитнуть» из моего приложения. В зависимости от места в приложении, они могут нажать кнопку твита, и он отправит их в Safari с сообщением, которое меняется в зависимости от того, где они находятся.

Чтобы создать URL, мне нужно экранировать строку запроса, которую я хочу поместить в объект NSUrl. Итак, я делаю это:

NSString* escapedTweet = [@"Some String With Spaces" stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

После объединения базы мой URL-адрес выходит "http://www.twitter.com/home/?status=Some&20String%20With%20Spaces" - посмотрел его в отладчике, и это определенно значение (как и ожидалось). Теперь я создаю свой URL и запускаю safari:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:escapedUrlString]];

Но вот где возникает проблема: кажется, что OpenUrl ускользает от моих знаков процента, поэтому фактический URL, на который переходит Safari, это "http://www.twitter.com/home/?status=Some%2520String%2520With%2520Spaces",, что, очевидно, является проблемой, поскольку twitter создает сообщение о состоянии как" Some% 20String% 20 С% 20 пробелов ".

NSUrl НЕ позволит мне создать URL с пробелами в нем, поэтому я совершенно заблудился, как заставить мои URL просто включать% 20. Кто-нибудь еще сталкивался с этой проблемой или нашел решение?

Я работаю на iPad с обновленной ОС, но не уверен, что это та же проблема на iPhone.

Редактировать: в двух словах, как заставить openUrl открывать http://www.twitter.com/home/?status=Some%20Url%20With%20Spaces без экранирования моих знаков процента и создания URL вроде http://www.twitter.com/home/?status=Some%2520Url%2520With%2520Spaces?

1 Ответ

0 голосов
/ 14 марта 2012

Я предполагаю, что escapedUrlString объявлено как NSURL *escapedUrlString = [NSURL URLWithString:escapedTweet];.Тогда ваша проблема, вероятно, заключается в openURL:[NSURL URLWithString:escapedUrlString]];, потому что вы берете URL, передаете его в другой URL и затем открываете его.Исправьте, передав escapedURLString (который должен называться 'escapedURL') вместо URLWithString:….

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...