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 }
复制代码

然后运行就可以了:


相关文章
|
7天前
|
机器学习/深度学习 编解码 自动驾驶
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
31 3
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
|
11天前
|
机器学习/深度学习 编解码 自动驾驶
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
39 16
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
|
1天前
|
机器学习/深度学习 数据采集 运维
机器学习在网络流量预测中的应用:运维人员的智慧水晶球?
机器学习在网络流量预测中的应用:运维人员的智慧水晶球?
28 18
|
1月前
|
负载均衡 容灾 Cloud Native
云原生应用网关进阶:阿里云网络ALB Ingress 全能增强
在过去半年,ALB Ingress Controller推出了多项高级特性,包括支持AScript自定义脚本、慢启动、连接优雅中断等功能,增强了产品的灵活性和用户体验。此外,还推出了ingress2Albconfig工具,方便用户从Nginx Ingress迁移到ALB Ingress,以及通过Webhook服务实现更智能的配置校验,减少错误配置带来的影响。在容灾部署方面,支持了多集群网关,提高了系统的高可用性和容灾能力。这些改进旨在为用户提供更强大、更安全的云原生网关解决方案。
557 20
|
2月前
|
Kubernetes 安全 Devops
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
97 10
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
|
1月前
|
容灾 网络协议 数据库
云卓越架构:云上网络稳定性建设和应用稳定性治理最佳实践
本文介绍了云上网络稳定性体系建设的关键内容,包括面向失败的架构设计、可观测性与应急恢复、客户案例及阿里巴巴的核心电商架构演进。首先强调了网络稳定性的挑战及其应对策略,如责任共担模型和冗余设计。接着详细探讨了多可用区部署、弹性架构规划及跨地域容灾设计的最佳实践,特别是阿里云的产品和技术如何助力实现高可用性和快速故障恢复。最后通过具体案例展示了秒级故障转移的效果,以及同城多活架构下的实际应用。这些措施共同确保了业务在面对网络故障时的持续稳定运行。
|
2月前
|
数据采集 JavaScript 前端开发
异步请求在TypeScript网络爬虫中的应用
异步请求在TypeScript网络爬虫中的应用
|
2月前
|
JSON Dart 前端开发
鸿蒙应用开发从入门到入行 - 篇7:http网络请求
在本篇文章里,您将掌握鸿蒙开发工具DevEco的基本使用、ArkUI里的基础组件,并通过制作一个简单界面掌握使用
87 8
|
2月前
|
Web App开发 网络协议 安全
网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
Wireshark是一款开源和跨平台的抓包工具。它通过调用操作系统底层的API,直接捕获网卡上的数据包,因此捕获的数据包详细、功能强大。但Wireshark本身稍显复杂,本文将以用抓包实例,手把手带你一步步用好Wireshark,并真正理解抓到的数据包的各项含义。
138 2
|
2月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
112 3

热门文章

最新文章