2016-08-10 5 views
1

Я пытаюсь получить погоду для города, используя Openweathermap используя этот код:Получить погоды для городов с именами, содержащими пробелы, используя Openweathermap

func getWeatherByCity(city: String) { 
    if let weatherRequestURL = NSURL(string: "\(openWeatherMapBaseURL)?APPID=\(openWeatherMapAPIKey)&q=\(city)") { 
     getWeather(weatherRequestURL: weatherRequestURL) 
    } 
} 

(Полный текст учебника http://www.globalnerdy.com/2016/04/02/how-to-build-an-ios-weather-app-in-swift-part-1-a-very-bare-bones-weather-app/)

АНИ отлично работает с названиями городов, которые не содержат пробелов.

даже на домашней странице http://openweathermap.org/, ища сан-франциско не дает никаких результатов.

Что здесь не хватает?

ответ

2

После @SaintThread предложение, удаляя пробелы делается путем замены вхождений пространства с пустой строкой:

containsPlacemark.locality?.replacingOccurrences(of: " ", with: "") 

Но после того, как обратиться в службу поддержки, они рекомендовали использовать подчеркивания вместо пробелов. Вот выдержка из их электронной почты:

Действительно, поддержка пространств нарушена. Пожалуйста, просто замените их цифрами . Действительно, вы можете просто опустить пробелы написание «Сан-Франциско» как «SanFrancisco», но этот способ может привести к неожиданным результатам с некоторых конкретных городов, «San_Francisco» - лучшая форма.

Так правильный способ справиться с этим следующее:

containsPlacemark.locality?.replacingOccurrences(of: " ", with: "_") 
+0

Если мой ответ помог вам, пожалуйста, отметьте его правильным, спасибо :) –

0

вам нужно заменить пробелы в название города на + знак

let string = "San Francisco" 
let replaced = (string as NSString).stringByReplacingOccurrencesOfString(" ", withString: "+") 

enter image description here Если вы посмотрите на адресную строку - она ​​заменяет пробелы с плюс сам.

Для этого сайта нам нужно удалить пробелы: enter image description here

Не знаю, почему они утверждают, что их поисковая система является очень гибкой :)

+0

Я использовал 'вернуть containsPlacemark.locality .replacingOccurrences? (Из: "", с": ")', это очиститель – Carpsen90

+0

да, но вы заменяете пустым пространством, когда идея заменяется на «+» – Almazini

+0

Нет, знак + не решает проблему – Carpsen90