Подтвердить что ты не робот

Как создать NSURL, который содержит | (символ трубы)?

Я пытаюсь получить доступ к службе геокодирования google maps с моего приложения iphone. Когда я пытаюсь сделать 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"];

Я не вижу другого способа в google api отправлять координаты границ без трубы. Любые идеи о том, как я могу это сделать?

4b9b3361

Ответ 1

Вы пытались заменить трубку на %7C (закодированное URL-адресом для char |)?

Ответ 2

Поскольку 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)
}

Ответ 3

Если вы хотите быть в безопасности для любых странных символов, которые вы поместите в будущем, используйте метод 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];