получить URL-адрес из строки с помощью конструктора URL (string:) - PullRequest
0 голосов
/ 09 марта 2020

Я создаю функцию, которая делает запрос API. Функция получает параметр и помещает его в вызов API. Это примерно так:

static func queryCities(cityNameString : String, completion: @escaping (City)->()){
    let urlString = "http://api.geonames.org/searchJSON?q=\(cityNameString)&username=myusername"
    guard let url = URL(string: urlString) else {return}
    print(url)

}

Но только когда я пытаюсь преобразовать свою строку в URL, функция ничего не возвращает. Мне нужно уточнить, что вызов API работает хорошо, если я вставлю его в Safari. Как я могу решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 09 марта 2020

Я бы рекомендовал использовать URLComponents для сборки вашего URL:

static func queryCities(cityNameString : String, completion: @escaping (City)->()) {
    var components = URLComponents(string: "http://api.geonames.org/searchJSON")
    components?.queryItems = [
        URLQueryItem(name: "q", value: cityNameString),
        URLQueryItem(name: "username", value: "myusername")
    ]

    guard let url = components?.url else { return }
    print(url)

    // do the http request here
}

1 голос
/ 09 марта 2020

Проверьте место и удалите его из String

 let cityName = "  My CityName  "
 let trimmed = cityName.trimmingCharacters(in: .whitespacesAndNewlines)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...