0
我試圖運行一個應用程序,允許您使用搜索欄,它將返回只是臨時,城市和條件。當我運行它時,我得到了一個無返回值的temp和'Code:401 API無效'錯誤。但是,我試過的兩個代碼都應該工作。我可能試圖從OpenWeather獲取錯誤的數據,但我似乎無法找到在哪裏或如何解決它 - 沒有其他錯誤出現。Swift3:Openweather API返回零和API錯誤
我想結合這個主題的兩個教程/指南,但一個使用不同的API &另一個是在Swift2中。
謝謝!
import UIKit
class ViewController: UIViewController, UISearchBarDelegate {
@IBOutlet weak var citySearchBar: UISearchBar!
@IBOutlet weak var cityLabel: UILabel!
@IBOutlet weak var conditionLabel: UILabel!
@IBOutlet weak var tempLabel: UILabel!
var temp: Int!
var condition: String!
var city: String!
let apiID:String = "d7817e07565a0019c5e7851a59eeca73"
var exists: Bool = true
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
citySearchBar.delegate = self
}
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
let urlRequest = URLRequest(url: URL(string: "http://api.openweathermap.org/data/2.5/weather?q=\(citySearchBar.text!.replacingOccurrences(of: " ", with: "_"))&appid=\(apiID))")!)
let task = URLSession.shared.dataTask(with: urlRequest) { (data, response, error) in
if error == nil {
do {
let weatherData = try JSONSerialization.jsonObject(
with: data!,
options: .mutableContainers) as! [String : AnyObject]
let weather = weatherData
DispatchQueue.main.async {
self.cityLabel.text = self.city
self.tempLabel.text = "\((self.temp))°"
self.conditionLabel.text = weather.description
}
} catch let jsonError {
print(jsonError.localizedDescription)
} } }
task.resume()
} }
啊謝謝。我認爲它已經在weatherData中設置了。很高興知道。 –
一如既往,請閱讀JSON輸出。這很容易。 '[]'表示數組,'{}'表示字典 – vadian