21

我正在尝试从我的 iphone 应用程序访问谷歌地图的前向地理编码服务。当我尝试从一个带有管道的字符串中创建一个 NSURL 时,我只得到一个 nil 指针。

NSURL *searchURL = [NSURL URLWithString:@"http://maps.google.com/maps/api/geocode/json?address=6th+and+pine&bounds=37.331689,-122.030731|37.331689,-122.030731&sensor=false"];

我在 google api 中看不到任何其他方式来发送边界坐标而不使用管道。关于我如何做到这一点的任何想法?

4

3 回答 3

34

您是否尝试过用%7C( char 的 URL 编码值|)替换管道?

于 2010-06-14T20:26:38.933 回答
20

由于stringByAddingPercentEscapesUsingEncoding已弃用,您应该使用stringByAddingPercentEncodingWithAllowedCharacters.

快速回答:

let rawUrlStr = "http://maps.google.com/maps/api/geocode/json?address=6th+and+pine&bounds=37.331689,-122.030731|37.331689,-122.030731&sensor=false";
let urlEncoded = rawUrlStr.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
let url = NSURL(string: urlEncoded)

编辑:斯威夫特 3 答案:

let rawUrlStr = "http://maps.google.com/maps/api/geocode/json?address=6th+and+pine&bounds=37.331689,-122.030731|37.331689,-122.030731&sensor=false";
if let urlEncoded = rawUrlStr.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
    let url = NSURL(string: urlEncoded)
}
于 2015-12-18T15:07:57.587 回答
9

如果您想对将来放置的任何奇怪字符保持安全,请使用stringByAddingPercentEscapesUsingEncoding方法使字符串“URL-Friendly”...

NSString *rawUrlStr = @"http://maps.google.com/maps/api/geocode/json?address=6th+and+pine&bounds=37.331689,-122.030731|37.331689,-122.030731&sensor=false";
NSString *urlStr = [rawUrlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *searchURL = [NSURL URLWithString:urlStr];
于 2014-01-22T15:53:10.777 回答