使UIImage遵循codable的另一种方式

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
    }

   
  }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容