2010-06-14 85 views
17

我想從我的iPhone應用程序訪問谷歌地圖的前進地理編碼服務。 當我嘗試從一個字符串與管道中製作一個NSURL時,我只是得到一個零指針。如何製作一個包含|的NSURL (管道字符)?

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

我沒有看到任何其他方式在谷歌API中發送與管道的邊界座標。 關於我如何做到這一點的任何想法?

回答

29

您是否試過用%7C(char |的URL編碼值)替換管道?

+1

是的,這工作。哈謝謝你,我是一個完整的網址noob。 – aks 2010-06-14 20:31:14

+4

不是NSString有一個 - stringByAddingPercentEscapesUsingEncoding:方法爲你做? – 2010-06-14 20:31:31

+0

doh。這正是我所需要的,除了%20之外,並不知道百分比轉義。多謝你們 – aks 2010-06-14 20:34:24

9

如果你想成爲什麼奇怪的字符,你會放在未來,用stringByAddingPercentEscapesUsingEncoding方法,使字符串「URL友好」的安全......

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

由於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) 
} 
相關問題