基本上,我正在尝试从我的应用程序中编写一个“tweet this”按钮。根据他们在应用程序中的位置,他们可以点击推文按钮,它会将它们发送到Safari,其中的推文消息会根据它们的位置而变化。
为了创建URL,我必须转义我想要放在NSUrl对象中的查询字符串。所以,我这样做:
NSString* escapedTweet = [@"Some String With Spaces" stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
连接基础之后,我的网址出现了“http://www.twitter.com/home/?status=Some&20String%20With%20Spaces” - 在调试器中查看它,这绝对是值(如预期的那样)。现在,我创建了我的URL并启动了safari:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:escapedUrlString]];
但问题就出现了:OpenUrl似乎正在逃避我的百分号,所以Safari的实际网址是“http://www.twitter.com/home/?status=Some%2520String%2520With %2520Spaces“,这显然是一个问题,因为twitter创建状态消息为”Some%20String%20With%20Spaces“。
NSUrl不允许我创建一个包含空格的网址,所以我完全迷失了如何让我的网址只包含一个%20。有没有其他人遇到此问题或找到了解决方法?
我在拥有最新操作系统的iPad上运行,不确定它是否与iPhone上的问题相同。
编辑:简而言之,如何在不转义百分号并创建http://www.twitter.com/home/?status=Some%20Url%20With%20Spaces之类的网址的情况下让openUrl打开http://www.twitter.com/home/?status=Some%2520Url%2520With%2520Spaces?
答案 0 :(得分:0)
我假设escapedUrlString
被声明为NSURL *escapedUrlString = [NSURL URLWithString:escapedTweet];
。那么您的问题可能在openURL:[NSURL URLWithString:escapedUrlString]];
,因为您正在获取一个URL,将其传递到另一个 URL然后打开它。通过传递escapedURLString
(应该命名为“escapedURL
”)而不是URLWithString:…
来修复。