NSUserDefaults
不是一个大卡车,你可以把任何东西扔进去。它是一系列只接受特定类型的管道。
你可以保存以下类型到NSUserDefaults
:
NSData
NSString
NSNumber
NSDate
NSArray
NSDictionary
如果你想要保存其他任何东西到NSUserDefaults
,通常需要将其归档为NSData
对象并存储起来(记住,当你需要取回数据时,你需要对其进行解档)。
将UIImage
对象转换为数据有两种方法。有函数可用于创建图像的PNG表示或JPEG表示。
对于PNG:
let imageData = UIImagePNGRepresentation(yourImage)
对于JPEG格式:
let imageData = UIImageJPEGRepresentation(yourImage, 1.0)
第二个参数是一个 CGFloat
,表示压缩质量,0.0
表示最低质量,1.0
表示最高质量。请注意,如果使用JPEG格式,在除了 1.0
以外的任何值上压缩和解压缩图片,随着时间的推移,你的图片质量将逐渐降低。PNG 是无损的,所以不会降低图片质量。
要从数据对象中取出图像,可以使用 UIImage
的 init
方法:
let yourImage = UIImage(data:imageData)
无论您如何将UIImage
对象转换为数据,此方法都有效。
在较新版本的Swift中,函数已更名、重新组织,并以以下方式调用:
对于PNG:
let imageData = yourImage.pngData()
对于JPEG格式:
let imageData = yourImage.jpegData(compressionQuality: 1.0)
尽管Xcode会自动为您更正旧版本