Ответ 1
Вы пытались заменить трубку на %7C
(закодированное URL-адресом для char |
)?
Я пытаюсь получить доступ к службе геокодирования 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 отправлять координаты границ без трубы. Любые идеи о том, как я могу это сделать?
Вы пытались заменить трубку на %7C
(закодированное URL-адресом для char |
)?
Поскольку 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)
}
Если вы хотите быть в безопасности для любых странных символов, которые вы поместите в будущем, используйте метод 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];