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

然后运行就可以了:


相关文章
|
22天前
|
机器学习/深度学习 自然语言处理 数据处理
大模型开发:描述长短期记忆网络(LSTM)和它们在序列数据上的应用。
LSTM,一种RNN变体,设计用于解决RNN处理长期依赖的难题。其核心在于门控机制(输入、遗忘、输出门)和长期记忆单元(细胞状态),能有效捕捉序列数据的长期依赖,广泛应用于语言模型、机器翻译等领域。然而,LSTM也存在计算复杂度高、解释性差和数据依赖性强等问题,需要通过优化和增强策略来改进。
|
26天前
|
数据库 Android开发 开发者
构建高效Android应用:采用Kotlin协程优化网络请求处理
【2月更文挑战第30天】 在移动应用开发领域,网络请求的处理是影响用户体验的关键环节。针对Android平台,利用Kotlin协程能够极大提升异步任务处理的效率和简洁性。本文将探讨如何通过Kotlin协程优化Android应用中的网络请求处理流程,包括协程的基本概念、网络请求的异步执行以及错误处理等方面,旨在帮助开发者构建更加流畅和响应迅速的Android应用。
|
1月前
|
监控 网络协议 Java
Linux 网络编程从入门到进阶 学习指南
在上一篇文章中,我们探讨了 Linux 系统编程的诸多基础构件,包括文件操作、进程管理和线程同步等,接下来,我们将视野扩展到网络世界。在这个新篇章里,我们要让应用跳出单机限制,学会在网络上跨机器交流信息。
Linux 网络编程从入门到进阶 学习指南
|
1月前
|
网络协议 Go 开发者
Go语言网络编程基础:构建高效、可靠的网络应用
【2月更文挑战第12天】本文将深入探讨Go语言在网络编程领域的基础知识,包括其强大的并发模型、网络库的使用、TCP/IP和HTTP协议的理解等。通过本文,读者将能够理解Go语言在网络编程中的优势,并掌握构建高效、可靠网络应用的核心技能。
|
1月前
|
数据采集 监控 安全
Go语言在网络安全中的应用
【2月更文挑战第24天】Go语言,作为一种高效且易于维护的编程语言,近年来在网络安全领域得到了广泛的应用。本文旨在探讨Go语言在网络安全中的应用,包括其在防火墙、入侵检测、网络爬虫以及Web安全等方面的应用,并分析了Go语言在网络安全领域的优势与前景。
|
7天前
|
传感器 监控 安全
|
7天前
|
安全 SDN 数据中心
|
7天前
|
安全 网络安全 网络虚拟化
虚拟网络设备与网络安全:深入分析与实践应用
在数字化时代📲,网络安全🔒成为了企业和个人防御体系中不可或缺的一部分。随着网络攻击的日益复杂和频繁🔥,传统的物理网络安全措施已经无法满足快速发展的需求。虚拟网络设备🖧,作为网络架构中的重要组成部分,通过提供灵活的配置和强大的隔离能力🛡️,为网络安全提供了新的保障。本文将从多个维度深入分析虚拟网络设备是如何保障网络安全的,以及它们的实际意义和应用场景。
|
22天前
|
机器学习/深度学习 PyTorch 算法框架/工具
卷积神经元网络中常用卷积核理解及基于Pytorch的实例应用(附完整代码)
卷积神经元网络中常用卷积核理解及基于Pytorch的实例应用(附完整代码)
18 0
|
26天前
|
机器学习/深度学习 安全 网络安全
网络安全与信息安全:防范漏洞、应用加密技术与提升安全意识
【2月更文挑战第30天】 在数字化时代,随着网络技术的迅猛发展,网络安全和信息安全问题日益突出。本文将深入探讨网络安全漏洞的成因与危害、加密技术的应用以及如何提升个人和企业的安全意识。通过分析不同类型的网络攻击手段,我们旨在提供一系列的防护策略,以增强信息系统的抵抗力。同时,文章还将介绍最新的加密技术动态,并讨论如何培养良好的网络安全习惯,为读者打造一道坚实的信息安全防线。