【问题标题】:Nsurl return nil when i am selecting iPhone language except English当我选择除英语以外的 iPhone 语言时,Nsurl 返回 nil
【发布时间】:2011-07-25 12:39:19
【问题描述】:

我正在调用默认地图应用程序。来自我的应用程序,但例如当我在我的 iphone 上为当前位置选择葡萄牙语时,NSURL 返回 nil。 我已经使用了UTF8编码和百分比封装如下:-

 NSString *encodedURLString = [urlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
    //where urlString has value http://maps.google.com/maps?saddr=Localiza\u00e7\u00e3o+actual&daddr=28.6522907,77.1929857
 NSURL *URL = [NSURL URLWithString:encodedURLString];
 [[UIApplication sharedApplication] openURL:URL];

我已经尝试使用 NSUTF8Encoding 而不是 NSASCIIStringEncoding,但没有任何帮助。 感谢您的帮助。

【问题讨论】:

  • 您是否尝试在对字符串进行编码之后但在从中创建 URL 之前打印出字符串的值?对整个 URL 字符串进行编码很奇怪,通常您只需对请求数据进行编码。

标签: iphone xcode ios4 encoding nsurl


【解决方案1】:

您正在对整个 URL 进行百分比编码。

这会将http://www.google.com 变成http%3A//www.google.com,这是一个格式错误的网址。

来自 NSURL 类参考:

返回值:一个用 URLString 初始化的 NSURL 对象。如果字符串格式错误,则返回 nil。

所以,你收到 nil。

你想做的是这样的:

NSString *path = @"http://maps.google.com/maps";
NSString *query = @"saddr=Localiza\u00e7\u00e3o+actual&daddr=28.6522907,77.1929857";
query = [query stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding];

NSString *url = [NSString stringWithFormat: @"%@?%@", path, query];
NSURL *URL = [NSURL URLWithString: url];
[[UIApplication sharedApplication] openURL: URL];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多