如何制作包含|的NSURL (管道人物)?

时间:2010-06-14 20:23:49

标签: iphone nsurl

我正试图从我的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中看到任何其他方式用管道发送边界坐标。 关于我如何做到这一点的任何想法?

3 个答案:

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