【发布时间】:2010-10-01 19:38:29
【问题描述】:
基本上,我正在尝试从我的应用程序内部编写一个“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 访问的实际 URL 是“http://www.twitter.com/home/?status=Some%2520String%2520With %2520Spaces”,这显然是一个问题,因为 twitter 将状态消息创建为“Some%20String%20With%20Spaces”。
NSUrl 不允许我创建一个带有空格的 URL,所以我完全不知道如何让我的 URL 只包含一个 %20。有没有其他人遇到过这个问题或找到了解决方法?
我在装有最新操作系统的 iPad 上运行,不确定 iPhone 上是否存在同样的问题。
编辑:简而言之,我如何让 openUrl 打开 http://www.twitter.com/home/?status=Some%20Url%20With%20Spaces 而不转义我的百分号并创建像 http://www.twitter.com/home/?status=Some%2520Url%2520With%2520Spaces 这样的 URL?
【问题讨论】:
-
当你说“我的网址出来”时,你是指你的网址还是你的网址字符串?尝试做
NSURL * url = [NSURL URLWithString:escapedUrlString];并打印它以查看它是否是 NSURL 而不是 OpenURL 进行转义。还要检查控制台日志;我认为 SpringBoard.app 打印正在打开的 URL。
标签: iphone objective-c ipad safari