Лучше сохранить его как base64string
, вы не хотите хранить большое значение в UserDefaults.
Для кодирования UIImage
используйте это:
let image = UIImage()
let data = image.pngData()
let imageBase64String = data?.base64EncodedString()
UserDefaults.standard.set(imageBase64String, forKey: "encodedImage")
А для декодирования и извлечения UIImage
используйте это:
if let imageBase64String = UserDefaults.standard.value(forKey: "encodedImage"),
let url = URL(string: String(format:"data:application/octet-stream;base64,%@",imageBase64String))
{
do
{
let data = try Data(contentsOf: url)
let image = UIImage(data: data)
}
catch let error
{
print("Error decoding image")
}
}
Если вам действительно нужно сохранять изображения в формате PNG, JPEG локально, используйте CoreData для их сохранения на устройстве.