当我选择 iPhone 语言(英语除外)时,Nsurl 返回 nil

发布于 2024-11-25 18:51:17 字数 545 浏览 1 评论 0原文

我正在调用默认地图应用程序。从我的应用程序,但例如,当我在 iPhone 上选择葡萄牙语言作为当前位置时,NSURL 返回 nil。 我已经使用了 UTF8encoding 和百分比封装,如下所示:-

 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 但没有任何帮助。 感谢您的帮助。

i m calling default map app. from my application but for example when i select Portugal language on my iphone for current location NSURL return nil.
I already used UTF8encoding and percentage encapsulate as follows:-

 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];

i already try NSUTF8Encoding instead NSASCIIStringEncoding but nothing helped.
thanx for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时光匆匆的小流年 2024-12-02 18:51:18

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

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

来自 NSURL 类参考:

返回值:使用 URLString 初始化的 NSURL 对象。如果字符串格式错误,则返回 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];

You are percent-encoding the entire URL.

This turns http://www.google.com into http%3A//www.google.com, which is a malformed URL.

From the NSURL Class Reference:

Return Value: An NSURL object initialized with URLString. If the string was malformed, returns nil.

Ergo, you are receiving nil.

What you want to do is this:

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];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文