我正试图从我的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中看到任何其他方式用管道发送边界坐标。 关于我如何做到这一点的任何想法?
答案 0 :(得分:32)
您是否尝试使用%7C
替换管道(char |
的URL编码值)?
答案 1 :(得分:16)
不推荐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)
编辑:Swift 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)
}
答案 2 :(得分: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];