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

然后运行就可以了:


相关文章
|
1月前
|
缓存 负载均衡 安全
Swift中的网络代理设置与数据传输
Swift中的网络代理设置与数据传输
|
2月前
|
JSON Dart 前端开发
鸿蒙应用开发从入门到入行 - 篇7:http网络请求
在本篇文章里,您将掌握鸿蒙开发工具DevEco的基本使用、ArkUI里的基础组件,并通过制作一个简单界面掌握使用
88 8
|
2月前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
179 3
图卷积网络入门:数学基础与架构设计
|
2月前
|
Web App开发 网络协议 安全
网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
Wireshark是一款开源和跨平台的抓包工具。它通过调用操作系统底层的API,直接捕获网卡上的数据包,因此捕获的数据包详细、功能强大。但Wireshark本身稍显复杂,本文将以用抓包实例,手把手带你一步步用好Wireshark,并真正理解抓到的数据包的各项含义。
138 2
|
2月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
113 3
|
3月前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
3月前
|
JSON 数据处理 Swift
Swift 中的网络编程,主要介绍了 URLSession 和 Alamofire 两大框架的特点、用法及实际应用
本文深入探讨了 Swift 中的网络编程,主要介绍了 URLSession 和 Alamofire 两大框架的特点、用法及实际应用。URLSession 由苹果提供,支持底层网络控制;Alamofire 则是在 URLSession 基础上增加了更简洁的接口和功能扩展。文章通过具体案例对比了两者的使用方法,帮助开发者根据需求选择合适的网络编程工具。
62 3
|
3月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
68 2
|
3月前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
72 2
|
3月前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)入门
【10月更文挑战第41天】在人工智能的璀璨星空下,卷积神经网络(CNN)如一颗耀眼的新星,照亮了图像处理和视觉识别的路径。本文将深入浅出地介绍CNN的基本概念、核心结构和工作原理,同时提供代码示例,带领初学者轻松步入这一神秘而又充满无限可能的领域。

热门文章

最新文章