[Swift通天遁地]四、网络和线程-(8)下载网络图片并实时显示下载
发布时间:2020-12-14 05:07:25 所属栏目:百科 来源:网络整理
导读:本文将演示下载网络图片,显示下载进度,并保存在沙箱目录中。 首先确保在项目中已经安装了所需的第三方库。 点击【Podfile】,查看安装配置文件。 1 source ‘ https://github.com/CocoaPods/Specs.git ‘ 2 platform :ios, ‘ 12.0 ‘ 3 use_frameworks! 4
本文将演示下载网络图片,显示下载进度,并保存在沙箱目录中。 首先确保在项目中已经安装了所需的第三方库。 点击【Podfile】,查看安装配置文件。 1 source ‘https://github.com/CocoaPods/Specs.git‘ 2 platform :ios,‘12.0‘ 3 use_frameworks! 4 5 target ‘DemoApp’ do 6 pod ‘Alamofire‘,‘~> 4.0‘ 7 end 根据配置文件中的相关配置,安装第三方库。 然后点击打开【DemoApp.xcworkspace】项目文件。 在项目导航区,打开视图控制器的代码文件【ViewController.swift】 现在开始编写代码,实现一个简单的功能:下载一个文件,并将该文件存储在沙箱中。 1 import UIKit 2 //在当前的类文件中,引入已经安装的第三方类库 3 import Alamofire 4 5 class ViewController: UIViewController { 6 //视图加载完成的方法 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view,typically from a nib. 10 //简单的图片下载功能 11 simpleDownload() 12 13 //实时显示下载进度的图片下载功能 14 complexDownload() 15 } 16 17 //添加一个方法, 18 //通过访问服务器的接口,下载并保存一个文本文件 19 func simpleDownload() 20 { 21 //初始化一个下载请求对象,并设置下载后的存储目录,位于沙箱的文档目录中。 22 let destination = DownloadRequest.suggestedDownloadDestination( 23 for: .documentDirectory,24 in: .userDomainMask 25 ) 26 //在控制台输出沙箱中的文档目录, 27 //使用这条日志信息,进入该目录并查看下载后的文件。 28 print(NSHomeDirectory()+"/Documents") 29 30 //调用网络操作库的下载方法,下载指定的服务器接口, 31 //并将下载后的文件存储在指定的目录中。 32 let result = Alamofire.download("https://httpbin.org/stream/1",to: destination) 33 //控制台输出结果 34 print(result) 35 } 36 37 //添加一个方法, 38 //实现一个可实时显示下载进度的图片下载功能 39 func complexDownload() 40 { 41 //初始化一个下载请求对象,并设置下载后的存储目录,位于沙箱的文档目录中。 42 let destination = DownloadRequest.suggestedDownloadDestination( 43 for: .documentDirectory,44 in: .userDomainMask 45 ) 46 47 //还可以设置服务器接口的请求参数 48 let parameters: Parameters = ["foo": "bar"] 49 50 //调用网络操作库的下载方法,下载指定的服务器接口, 51 //并将下载后的文件存储在指定的目录中。 52 Alamofire.download("http://images.apple.com/v/home/cx/images/gallery/iphone_large_2x.jpg",53 method: .get,54 parameters: parameters,55 encoding: JSONEncoding.default,56 to: destination) 57 //通过一个下载进度方法块,处理图片下载的事件 58 .downloadProgress(queue: DispatchQueue.global()) 59 { 60 progress in 61 //在控制台输出:进度的完成比例 62 print("Progress1: (progress.fractionCompleted)") 63 //在控制台输出:已经下载的字节数 64 print("Progress2: (progress.completedUnitCount)") 65 //在控制台输出:全部的字节数 66 print("Progress3: (progress.totalUnitCount)") 67 } 68 //完成的图片的下载后执行验证方法,此处返回成功标识 69 .validate { request,response,temporaryURL,destinationURL in 70 return .success 71 } 72 //处理图片下载后的返回信息 73 .responseJSON { response in 74 //在控制台输出:网络返回对象 75 debugPrint("response:(response)") 76 //在控制台输出:图片下载临时存放的位置 77 print("response.temporaryURL:(response.temporaryURL)") 78 //在控制台输出:下载后的存储位置 79 print("response.destinationURL:(response.destinationURL)") 80 } 81 } 82 83 override func didReceiveMemoryWarning() { 84 super.didReceiveMemoryWarning() 85 // Dispose of any resources that can be recreated. 86 } 87 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- amazon-web-services – 如何在不使用本机SDK的情
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 -
- XML(4)XDocument和XmlDocument搜索指定的节点
- JSON.parse()和JSON.stringify()
- CocoaPods为工程的所有target增加依赖支持
- ruby-on-rails – 如何在Rails 4中干净地更新HAB
- 如何强制C#条件指令的缩进?
- ruby-on-rails – ActiveRecord :: UnknownAttri
- oc中的正则表达式基本语法(一)
- vue按需加载组件webpack require.ensure的方法
热点阅读