Пример кода — Swift 3.0, работающий в Xcode 8 (β3).
Этот URL-адрес Weather Underground (когда MyKey
заменен действительным ключом) возвращает строку JSON, содержащую текущую погоду в заданном месте... http://api.wunderground.com/api/MyKey/conditions/q/51.3276,-1.0022.json
Приведенный ниже код должен делать то же самое, но вместо этого выдает ошибку («Запрошенный URL-адрес не найден на этом сервере», подробности внизу).
Может ли кто-нибудь увидеть, что мне не хватает в коде?
private let key = "MyKey" // Substitute a valid Weather Underground key here.
@IBAction func fetchWeather() {
let session = URLSession.shared
let url = URL(fileURLWithPath: "http://api.wunderground.com/api/\(key)/conditions/q/51.3276,-1.0022.json")
let handler = { (data: Data?, response: URLResponse?, error: NSError?) -> Void in
guard let data = data, let response = response, error == nil else {
print("\nError: \(error?.description)\n")
return
}
print("\nData: \(data)\n")
print("\nResponse: \(response)\n")
}
let task = session.dataTask(with: url, completionHandler: handler)
task.resume()
}
Error: Optional("Error Domain=NSURLErrorDomain Code=-1100 \"The requested URL was not found on this server.\" UserInfo={NSUnderlyingError=0x600000442520 {Error Domain=kCFErrorDomainCFNetwork Code=-1100 \"(null)\"}, NSErrorFailingURLStringKey=file:///http:/api.wunderground.com/api/MyKey/forecast/q/51.3276,-1.0022.json, NSErrorFailingURLKey=file:///http:/api.wunderground.com/api/MyKey/forecast/q/51.3276,-1.0022.json, NSLocalizedDescription=The requested URL was not found on this server.}")
fileURLWithPath
=›URLWithString
при создании URL-адреса. Та же проблема, что и здесь: stackoverflow.com/questions/28267352 / - person Larme   schedule 28.07.2016URL(string:...)
, что не замечал факта, что автозавершение кода Xcode на самом деле вставило неверный параметр. Заставьте вас прокомментировать ответ, и я отмечу его. - person Vince O'Sullivan   schedule 28.07.2016