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
}
}
}
网友评论