天气预报

Json在线解析工具: http://www.jsoneditoronline.org/

实时天气API: http://www.k780.com/api/weather.today

①绘制简单的UI,三个label,分别显示城市、天气、温度

②在Class外面创建Weather结构体

struct Weather {
    var city:String?
    var weather:String?
    var temp:String?
}

③编写配置天气的方法

func configView() {
        labelCity.text = self.weatherData?.city
        labelWeather.text = self.weatherData?.weather
        labelTemp.text = self.weatherData?.temp
    }

④将上述方法放入didset内,数据变化就更新页面

var weatherData:Weather?{
        didSet{
            configView()
        }
    }

⑤编写获取天气的方法,该方法放在viewDidLoad中

func getWeatherData(){
        //武汉天气API
        let url = NSURL(string: "http://api.k780.com:88/?app=weather.today&weaid=248&&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json")
        //新建一个会话配置器
        let config = NSURLSessionConfiguration.defaultSessionConfiguration()
        //配置超时时间为10秒
        config.timeoutIntervalForRequest = 10
        //建立会话
        let session = NSURLSession(configuration: config)
        //会话任务
        let task = session.dataTaskWithURL(url!,completionHandler: { (data, _, error) -> Void in
            //如果没有错误,则处理数据
            if error == nil{
                do {
                    //将json数据转化为字典
                    let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! NSDictionary
                    //print(json)
                    //把json对像直接实例成自定义对象
                    let weather = (json.valueForKey("result") as? NSDictionary).map{
                        Weather(city: $0["citynm"] as? String, weather: $0["weather"] as? String, temp: $0["temperature_curr"] as? String)
                    }
                    //在主线程中更新数据
                    dispatch_async(dispatch_get_main_queue(), {
                        () ->Void in
                        self.weatherData = weather
                    })
                } catch{
                    print("json error")
                }
            }
    })
        //执行任务
        task.resume()
    }

⑥网络访问时可能会报错,参考这篇博客

http://www.cnblogs.com/luoxiaoxi/p/5046518.html

时间: 2024-10-06 04:40:05

天气预报的相关文章

Python天气预报数据获取脚本

近来公司大屏幕的天气接口老是出问题,之前用的是webservice的http://www.webxml.com.cn/WebServices/WeatherWebService.asmx这个接口,坑的是每个月的25号该服务暂停维护,因此不得不寻找新的接口替换... 然后我在网站上找了很多接口(大都是过期的或者非免费的!)...类似 国家气象局提供的天气预报接口http://www.weather.com.cn/data/sk/101010100.html 2014年6月最新更新的http://w

Windows Phone 8.1 开发实例 天气预报

首先感谢林政老师的博客,给了我很大的指导. 准备工作 我的开发环境: - Visual Studio 2013(With Update 4) - Windows Phone 8.1 - Windows 8.1 我使用的是百度天气的api,所以你需要一个百度天气的ak,戳这里申请.记住你ak的值,像这样拼接uri: http://api.map.baidu.com/telematics/v3/weather?location=城市&output=xml&ak=你的ak 可以获取一个xml格式

天气预报API(三):免费接口测试(“旧编码”)

说明 我以参考文章为引子,自己测试并扩展,努力寻找更多的气象API... 本文所有测试均以青岛为例. 本文所列接口城市代码(cityid)参数都使用的 "旧编码":全国城市代码列表(旧) 或 全球城市.景点代码 注:另有 "新编码" 的介绍和使用,详见: 全国城市代码列表(新) 1. 国家气象局 当天基础天气接口 http://www.weather.com.cn/data/sk/101120201.html { "weatherinfo": {

Arduino Tian开发板:一个功能强大的天气预报中心

每天都在出现新的连接设备. Arduino携手云平台一起加入这场战斗,于是出现了一个新的挑战者 - Arduino Tian! 使用python和经典Arduino框架,本教程将引导您将您的Arduino Tian开发板变成一个天气预报中心. 但由于Lucky扩展板有那么多传感器,所以涉及到的内容可能会更多些! 第一部分:所需的设备 ●     Arduino Tian开发板(https://store.arduino.cc/arduino-genuino/arduino-genuino-boa

android应用开发-从设计到实现 3-6 静态原型的天气预报

静态原型的天气预报 未来5天的天气预报,可以看成由5个类似的天气模块构成,只要完成一个,其他几个就可以通过复制+修改内容实现改变. 首先来明确一下各个组件的尺寸和参数, 整个区域的大小,我设定成360dp*100dp: 左右边距设置成16dp: 这样一来,每日的天气模块就是(360-16-16)/ 5 = 65.6dp,我将它们设定成65dp宽: 天气的图标的大小设定成30dp的正方形区域(注意,这些图标不算是系统图标,所以它的尺寸不需要参考设计成24dp的系统图标): 日期的文字,参考Body

微信公众平台开发(21) 天气预报功能开发

原文:http://www.cnblogs.com/imaker/p/5491433.html 一.简介 前面几篇文章对微信公众平台的开通及简单使用做了简单的介绍,但都没有涉及到实际使用中的问题,例如天气查询,公交查询,快递查询等.接下来的几篇文章将对实际生活中会经常使用到的一些功能进行开发讲解,以供读者参考. 这一篇文章将对大家每天都会关心的天气查询进行开发,例如,用户发送消息 "苏州天气",则会返回苏州实时天气状况,以及未来两天甚至未来五天的天气状况. 二.思路分析 首先要对用户发

Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示

Android JSON原生解析的几种思路,以天气预报为例 今天项目中要实现一个天气的预览,加载的信息很多,字段也很多,所以理清了一下思路,准备独立出来写一个总结,这样对大家还是很有帮助的,老司机要开车了 涉及到网络,你就一定要先添加权限,准没错 <!--网络权限--> <uses-permission android:name="android.permission.INTERNET" /> 一.归属地查询(JSONObject) 这个也是最简单的一类Json

delphi 天气预报

天气预报 var astream : tmemorystream; sStream : TStringStream; jv : TJSONValue; begin astream := tmemorystream.Create; sStream := TStringStream.Create( '', tencoding.UTF8 ); self.NetHTTPClient1.Get( 'http://www.weather.com.cn/adat/sk/101010100.html', ast

天气预报接口

网址:http://www.k780.com/api/weather.city天气: 实时天气:http://api.k780.com:88/?app=weather.today&weaid=1&&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json 天气预报(未来5-7天):http://api.k780.com:88/?app=weather.future&weaid=1&&

微信公众平台之超简单实用的天气预报后台实现

微信公众平台之超简单实用的天气预报后台实现 概述,前段时间我在开发一个自己的微信公众平台,需要实现天气预报功能,在网上度娘了下,实现天气预报的接口API还蛮多的,有:中国气象局.雅虎和新浪等,中国天气预报接口需要全国的编码,雅虎的有时候访问不了,研究了下还是新浪提供的接口比较简单实用.新浪天气预报API的URL是http://php.weather.sina.com.cn/xml.php?city=%B1%B1%BE%A9&password=DJOYnieT8234jlsK&day=0.其