swift网络编程入门应用:天气预报

简介:

首先在Main.storyborad中添加并设置好三个label做简单的界面显示:

复制代码
 1 import UIKit
 2  3 //1、construct a constructs  4 struct Weather {
 5 var city: String?
 6 var weather: String?
 7 var temp: String?
 8 }//为什么不实用class呢,因为结构体初始化方便,不用写初始化方法  9 10 11 12 class ViewController: UIViewController {
13 14 @IBOutlet weak var labelCity: UILabel!
15 @IBOutlet weak var labelWeather: UILabel!
16 @IBOutlet weak var labelTemp: UILabel!
17 18 //3、接下来需要加一个计算属性 19 var weatherData:Weather?{
20 //4、发生变化的话,用swift独有的语法 21  didSet {
22  configView()
23  }
24  }
25 26 //2、然后考虑到:一启动app就是要刷新数据,所以需要这么一个方法 27  func configView(){
28 labelCity.text = self.weatherData?.city
29 labelWeather.text = self.weatherData?.weather
30 labelTemp.text = self.weatherData?.temp
31  }
32 33 //4、新建一个获取天气数据的方法 34  func getWeatherData()
35  {
36 //NSURLSession
37 //<1>资源定位 NSURL 加载的网址 38 let url = NSURL(string: "http://api.k780.com:88/?app=weather.today&weaid=238&&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json")
39 println(url!)
40 //<2>URL Session Configuration(URL会话配置):磁盘缓存、内存缓存、系统后台执行。下面用默认的磁盘缓存 41 let config = NSURLSessionConfiguration.defaultSessionConfiguration()
42  println(config)
43 config.timeoutIntervalForRequest = 10//配置超时时间,即用户加载网络的时间10秒以内
44 //<3>建立会话 45 let session = NSURLSession(configuration: config)
46 47 //<4>会话的任务 48 let task = session.dataTaskWithURL(url!, completionHandler: { (data,_, error) -> Void in 49 //<6>如果连接没有错误,则处理数据 50 if error == nil {
51 if let json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: nil)as?NSDictionary{
52 //下面获取数据转为字典,然后把json对象,直接实例化成自定义的对象,这步相对复杂,因为用到一个map函数 53 let weather:Weather = (json.valueForKey("result") as? NSDictionary).map{
54  Weather(
55 city: $0["citynm"] as? String
56 ,weather: $0["weather"] as? String
57 ,temp: $0["temperature_curr"] as? String
58  )
59 }!
60 //<8>更新界面却很慢,是因为更新界面不在主线程中,所以要在主线程中跟新这个界面 61  dispatch_async(dispatch_get_main_queue(), {
62 ()->Void in 63 //<7>获取数据之后,就要在视图中显示 64 self.weatherData = weather
65  })
66 67 68  }
69  }
70 })//第二个参数就是task完成之后要做的操作
71 //<5>执行任务 72  task.resume()
73 74 75  }
76 override func viewDidLoad() {
77  super.viewDidLoad()
78  getWeatherData()
79  }
80 81 override func didReceiveMemoryWarning() {
82  super.didReceiveMemoryWarning()
83  }
84 85 86 }
复制代码

然后运行就可以了:


相关文章
|
20天前
|
人工智能 运维 物联网
AI在蜂窝网络中的应用前景
AI在蜂窝网络中的应用前景
37 3
|
27天前
|
监控 安全
公司上网监控:Mercury 在网络监控高级逻辑编程中的应用
在数字化办公环境中,公司对员工上网行为的监控至关重要。Mercury 作为一种强大的编程工具,展示了在公司上网监控领域的独特优势。本文介绍了使用 Mercury 实现网络连接监听、数据解析和日志记录的功能,帮助公司确保信息安全和工作效率。
91 51
|
4天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
24 3
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
本文旨在通过深入浅出的方式,为读者揭示卷积神经网络(CNN)的神秘面纱,并展示其在图像识别领域的实际应用。我们将从CNN的基本概念出发,逐步深入到网络结构、工作原理以及训练过程,最后通过一个实际的代码示例,带领读者体验CNN的强大功能。无论你是深度学习的初学者,还是希望进一步了解CNN的专业人士,这篇文章都将为你提供有价值的信息和启发。
|
23天前
|
SQL 安全 前端开发
PHP与现代Web开发:构建高效的网络应用
【10月更文挑战第37天】在数字化时代,PHP作为一门强大的服务器端脚本语言,持续影响着Web开发的面貌。本文将深入探讨PHP在现代Web开发中的角色,包括其核心优势、面临的挑战以及如何利用PHP构建高效、安全的网络应用。通过具体代码示例和最佳实践的分享,旨在为开发者提供实用指南,帮助他们在不断变化的技术环境中保持竞争力。
|
21天前
RS-485网络中的标准端接与交流电端接应用解析
RS-485,作为一种广泛应用的差分信号传输标准,因其传输距离远、抗干扰能力强、支持多点通讯等优点,在工业自动化、智能建筑、交通运输等领域得到了广泛应用。在构建RS-485网络时,端接技术扮演着至关重要的角色,它直接影响到网络的信号完整性、稳定性和通信质量。
|
22天前
|
机器学习/深度学习 安全 数据挖掘
Swift语言的应用场景非常广泛
Swift语言的应用场景非常广泛
23 4
|
24天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第36天】探索卷积神经网络(CNN)的神秘面纱,揭示其在图像识别领域的威力。本文将带你了解CNN的核心概念,并通过实际代码示例,展示如何构建和训练一个简单的CNN模型。无论你是深度学习的初学者还是希望深化理解,这篇文章都将为你提供有价值的见解。
|
24天前
|
网络协议 数据挖掘 5G
适用于金融和交易应用的低延迟网络:技术、架构与应用
适用于金融和交易应用的低延迟网络:技术、架构与应用
50 5
|
24天前
|
运维 物联网 网络虚拟化
网络功能虚拟化(NFV):定义、原理及应用前景
网络功能虚拟化(NFV):定义、原理及应用前景
42 3