iOS项目开发实战(Swift)—查询天气小应用

原创 2015年11月20日 10:45:29

1.新建Xcode项目,创建single view application,项目名称为swift_Weather,选择语言为Swift。

2.打开Main.storyboard,新建三个控件,一个用于输入城市的TextField,一个查询按钮Button,一个用于显示天气信息的TextView。如下图:


3.然后直接将storyboard中的三个控件拖到ViewController.swift中,进行绑定,绑定是否成功可以看代码左边是否有一个小实的圆圈。如下图:


4.为查询按钮Button添加一个Action,用于查询对应城市的天气。此时就需要各地天气信息的API接口,可以通过“http://www.weather.com.cn/data/cityinfo/城市对应的编码.html”url得到一个JSON串,然后进行相应的解析,获取所需要的天气信息。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var cityInput: UITextField!
    @IBOutlet weak var btnSearch: UIButton!
    @IBOutlet weak var result: UITextView!

    var cityDictinary = ["北京" : 101010100,"杭州" : 101210101,"常德" : 101250601,"黄冈" : 101200501]
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func btnPressed(sender: AnyObject) {
        loadWeathInfo()
    }
    
    func loadWeathInfo(){
        //注意当启动应用程序的时候,会执行viewDidLoad
        if let cityName = cityInput.text{
            if let code = cityDictinary[cityName]{
                let str = "http://www.weather.com.cn/data/cityinfo/\(code).html"
                let url = NSURL(string: str)
                let data = NSData(contentsOfURL: url!)
                //编码出现error:Call can throw, but it is not marked with 'try' and the error is not handled,通过加一个try解决。原因就是没有处理错误
                do{
                    let json =
                    try  NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments)
                    let weatherInfo = json.objectForKey("weatherinfo")
                    
                    let city = weatherInfo?.objectForKey("city")
                    let maxTemp = weatherInfo?.objectForKey("temp1")
                    let minTemp = weatherInfo?.objectForKey("temp2")
                    let weather = weatherInfo?.objectForKey("weather")
                    result.text = " 城市:\(city!)\n 最高温度:\(maxTemp!)\n 最低温度:\(minTemp!)\n 天气:\(weather!)\n"
                }catch{
                    print("error")
                }

            }

        }
        //没查询完一次就进行清空
        cityInput.text = ""
    }
}

5.代码添加完成之后,成功运行结果如下图:


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Swift实现糗事百科Demo(实战项目)

本项目借用了某兄弟上传到code4app上的

iOS项目开发实战(Swift)—Button和Alert学习

1.相关代码如下 iOS9.0中,苹果官方推荐使用UIAlertViewController取代之前UIAlertView,使用UIAlertView在Xcode7中会出现警告。 ViewContro...

Swift - 使用OpenWeatherMap获取天气的实时数据、预测数据

我们做一些Web应用或者是手机应用,有时会需要展示出实时的天气数据或者天气预报数据。这里推荐一个好用的天气API服务:OpenWeatherMap。 1,OpenWeatherMap介绍 (1...

iOS项目开发实战(Swift)—View之间传递数据

1.ViewController.swift import UIKit class ViewController: UIViewController { let textField = UI...

swift网络之json(天气预报)

swift网络编程笔记 学啥语言涉及到网络是基本上都是先来个天气预报,这里也不例外,推荐一个json数据网站,基本够用了http://www.k780.com/api gitHub: https:...

zz 对用例的理解

Use Case (使用案例):在一般的UML建模过程中,分为以下几个阶段:业务、需求、分析和设计,其中设计可分为结构分析和行为分析。业务是对商业模型的深刻理解,从商业模型里面提取出业务需求,然后把需...

iOS项目开发实战(Swift)—项目目录和结构

单视图应用程序(single view application)包含以下几个重要的文件 1、AppDelegate.swift-应用程序委托类 手动初始化window对象 self.window...

iOS项目开发实战(Swift)—初探TableView

1.UIAlertController 1)ActionSheet直接从底部弹出提示框 2)Alert直接从中间弹出提示框 3)通过UIAlertAction添加相应的属性(eg:Cancle/OK ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)