通过API查天气。
载入
界面简单,
三个Label(地址、温度、描述)
一个Btn。
先把Btn写出来。
弹出Alert,附带一个文本输入框,把输入框的值传给通过Api获取天气数据的函数。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| @IBAction func setCityBtn() {
let alert = UIAlertController(title: "Set City", message: nil, preferredStyle: .alert) alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil)) alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in if let tf = alert.textFields?.first{ if let cityName = tf.text{ self.getWeatherData(cityName: cityName) } } })) alert.addTextField(configurationHandler: { (tf) in tf.placeholder="Please input city" }) self.present(alert,animated:true,completion: nil) }
|
天气Api
用了知心天气的API。https://api.seniverse.com/v3/weather/now.json?key=123456&location=jinan&language=zh-Hans&unit=c
其中如果要处理非HTTPS的网址,会报错。需要在info.plist文件中添加下面的选项:
SwiftyJSON
说实话我遇到问题了。等我读了SwfityJSON的文档回来研究明白再说吧。有点尬了。撤了撤了。
根据我滴最新查询,使用Swift 4.0的Codable暂时可以舍弃SwiftyJSON。
我们走起。
先解决怎么读Url的内容问题:
读url