我正试图从我的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"];
Run Code Online (Sandbox Code Playgroud)
我没有在google api中看到任何其他方式通过管道发送边界坐标.有关如何做到这一点的任何想法?
Ben*_*n S 32
您是否尝试使用%7C(char的URL编码值|)替换管道?
Flo*_*s M 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)
Run Code Online (Sandbox Code Playgroud)
编辑: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)
}
Run Code Online (Sandbox Code Playgroud)
如果您希望将来放置任何奇怪的字符,请使用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];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5459 次 |
| 最近记录: |