public struct ImageWrapper: Codable {
public let image: UIImage
enum ImageError:Error{
case EncodeFailue
case DecodeFailue
}
public enum CodingKeys: String, CodingKey {
case image
}
public init(image: UIImage) {
self.image = image
}
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
let data = try container.decode(Data.self, forKey: CodingKeys.image)
guard let image = UIImage(data: data) else {
throw ImageError.DecodeFailue
}
self.image = image
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
if let data = image.jpegData(compressionQuality: 1){
try container.encode(data, forKey: CodingKeys.image)
}
else if let data = image.pngData(){
try container.encode(data, forKey: CodingKeys.image)
}else{
throw ImageError.EncodeFailue
}
}
}
使UIImage遵循codable的另一种方式
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 1.当代种种事件不同于历史之处,在于我们不知道它们会产生什么后果。 2.经验和利益的偶然结合,往往会向人们揭示...
- 概述: SeekBar是进度条。我们使用进度条时,可以使用系统默认的进度条;也可以自定义进度条的图片和滑块图片等。...
- 曾国藩说:“人之气质,由于天生,很难改变,唯读书则可以变其气质。古之精于相法者,并言读书可以变换骨相。” 锻炼与不...