zoukankan      html  css  js  c++  java
  • [Xcode 实际操作]八、网络与多线程-(15)使用网址会话对象URLSession下载图片并存储在沙箱目录中

    目录:[Swift]Xcode实际操作

    本文将演示如何通过网址会话对象URLSession下载图片并存储在沙箱目录中。

    网址会话对象URLSession具有在后台上传和下载、暂停和恢复网络操作、丰富的代理模式等优点。

    在项目导航区,打开视图控制器的代码文件【ViewController.swift】

     1 import UIKit
     2 
     3 class ViewController: UIViewController {
     4     
     5     override func viewDidLoad() {
     6         super.viewDidLoad()
     7         // Do any additional setup after loading the view, typically from a nib.
     8         
     9         //创建一个网址对象,指定请求网络数据的网址。
    10         let url = URL(string: "https://www.cnblogs.com/strengthen/images/logo.png")
    11         //创建一个网络请求对象
    12         let request:URLRequest = URLRequest(url: url!)
    13         
    14         //网址会话URLSession在2013年发布,苹果对它的定位是作为旧的网络请求接口的替代者。
    15         //这里获得网址会话的单例对象
    16         let urlSession = URLSession.shared
    17 
    18         //网址会话单例对象提供了三种类型的网络请求服务。
    19         //1.数据任务
    20         //2.上传任务
    21         //3.下载任务
    22         //此处创建一个下载任务的网络请求
    23         let downloadTask = urlSession.downloadTask(with: request, completionHandler: { (location:URL?, response:URLResponse?, error:Error?) -> Void in
    24                 //创建一个异常捕捉语句,用来执行图片下载后的移动操作
    25                 do
    26                 {
    27                     //获得网络下载后,位于缓存目录的,图片原始存储路径
    28                     let originalPath = location!.path
    29                     //并在控制台打印输出原始存储路径
    30                     print("Original location:(originalPath)")
    31                     
    32                     //创建一个字符串,作为图片存储的目标位置
    33                     let targetPath:String = NSHomeDirectory() + "/Documents/logo.png"
    34                     
    35                     //获得文件管理对象,它的主要功能包括:
    36                     //1.读取文件中的数据
    37                     //2.向文件中写入数据
    38                     //3.删除或复制文件
    39                     //4.移动文件
    40                     //5.比较两个文件的内容
    41                     //6.测试文件的存在性
    42                     let fileManager:FileManager = FileManager.default
    43                     //将下载后的图片,从原始位置,移动到目标位置
    44                     try fileManager.moveItem(atPath: originalPath, toPath: targetPath)
    45                     //在控制台打印输出图片存储后的位置
    46                     print("new location:(targetPath)")
    47                 }
    48                 catch
    49                 {
    50                     print("Network error.")
    51                 }
    52         })
    53         
    54         //任务创建后,调用resume方法开始工作
    55         downloadTask.resume()
    56     }
    57     
    58     override func didReceiveMemoryWarning() {
    59         super.didReceiveMemoryWarning()
    60         // Dispose of any resources that can be recreated.
    61     }
    62 }
  • 相关阅读:
    MyBatisPlus乐观锁
    MyBatisPlus查询
    IDEA创建Java类时自动配置注释(作者,创建时间,版本等)
    MyBatisPlus自动填充处理
    Cannot read property '$createElement' of undefined
    IDEA中gradle的配置和使用
    android7.0以上https抓包
    转发unbuntu jdk 安装
    Unity 连接WebSocket
    Tween 使用
  • 原文地址:https://www.cnblogs.com/strengthen/p/10062081.html
Copyright © 2011-2022 走看看