在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。新建一个工程,命名为Weather,然后上网找一个天气预报的API,百度搜索“天气预报 api”,打开一个网站,如下图:
我们最好找json的格式的api,比如这样的
找到API之后,我们来制作一个用户界面,打开storyboard,加载一个按钮,命名为北京的天气信息:
在按钮下方加一个text view来呈现天气信息:
现在添加一个按钮的点击事件,打开ViewController,输入以下代码:
@IBAction func btnPressed(sender:AnyObject){ println("Button Clicked") }
运行看一下效果,点击按钮,显示:
然后我们来加载天气信息,为了让我们的程序更好,在工程中建立一个playground,targets勾选Weather,建好的playground如图:
playground中的代码如下:
var url = NSURL(string: "http://api.k780.com:88/?app=weather.today&weaid=1&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json") var data:NSData = NSData(contentsOfURL: url!, options: NSDataReadingOptions.DataReadingUncached, error: nil)! var str = NSString(data: data, encoding: NSUTF8StringEncoding)
接着我们来解析JSON,使用swift自带的解析工具,代码如下:
var json: AnyObject! = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: nil) var weatherInfo: AnyObject? = json?.objectForKey("result") var city = weatherInfo?.objectForKey("citynm")
可以从右边看到我们得到了Json中的城市信息,补全我们需要的所有信息:
var city = weatherInfo?.objectForKey("citynm") var temp = weatherInfo?.objectForKey("temperature") var day = weatherInfo?.objectForKey("days")
在loadWeather方法中加上信息的显示语句:
tv?.text = "城市:\(city)\n温度:\(temp)\n日期:\(day)"
虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:
大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。
原文地址:http://blog.csdn.net/cg1991130/article/details/43898933