花落√莫相思swift

81-Swift之图像的存储(UserDefaults)

2017-11-06  本文已影响14人  NetWork小贱

前言

在App的开发中,数据的存储是基本要掌握的技能。数据可以存放在云端或者服务器,也可以存放到本地。在云端和服务器上的数据可以通过连接(网址)进行存储和读取。存储在本地的数据就不是很好读取,这是因为现在iOS的系统在App的每次安装(Command + R)都会重新生成一个UDID,即是应用的安装序列号,这就导致在上一次运行存储的数据,在下一次运行获取中,出现找不到存储的文件的错误提示。目前,对使用文件路径存储数据同时经常需要 Command + R 的项目这是不可取的。如果在项目开发中要经常的 Command + R ,请选择将数据存储到云端或者服务器,再者使用 UserDefaults 。其中 UserDefaults 存储的数据是通过 Key - Value 形式存储和获取的,App的安装序列号的变化不影响 UserDefaults 的数据获取和存储。本篇就以存储图像为例子给大家演示。

一、图像的存储

// MARK: 图像的存储(使用 UserDefaults )
func imageSave(image:UIImage) -> Bool {
    // 图像要使用 UserDefaults 存储,首先要转化图像,否则,再次获取的为 nil
    let saveImage = UIImage.init(cgImage: image.cgImage!, scale: image.scale, orientation: image.imageOrientation)
    // UserDefaults 要存储对象要使用二进制流的形式
    let imageData = NSKeyedArchiver.archivedData(withRootObject: saveImage)
    // 进行存储
    UserDefaults.standard.set(imageData, forKey: "imageKey")
    // 进行磁盘同步
    return  UserDefaults.standard.synchronize()
}

注意:

二、图像的获取

// MARK: 图像的读取
func imageRead(imageKey:String) -> UIImage? {
    // 获取存储的数据
    let imageData = UserDefaults.standard.data(forKey: imageKey)
    var image:UIImage?
    if imageData != nil {
        image = NSKeyedUnarchiver.unarchiveObject(with: imageData!) as? UIImage
    }
    // 获取图像对象
    return image
}

说明:

上一篇下一篇

猜你喜欢

热点阅读