I'm trying to save users image to userDefaults but i'm always getting error "Thread 1: "Attempt to insert non-property list object (Function) for key savedimage" Here's my code
import UIKit
class productSelectionPage: UIViewController {
@IBOutlet weak var productImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Save image
let image = UIImage(named: "user")
let imageData = UIImage.jpegData(image)
UserDefaults.standard.setValue(imageData, forKey: "savedImage")
}
@IBAction func offerButtonTapped(_ sender: UIButton) {
// present image
let imageData = UserDefaults.standard.object(forKey: "savedImage")
let image = UIImage(data: (imageData as! NSData) as Data)
productImageView.image = image
// crash
}
}
Try to use PropertyListEncoder() and Decoder like this:
func saveImage() {
guard let data = UIImage(named: "image").jpegData(compressionQuality: 0.5) else { return }
let encoded = try! PropertyListEncoder().encode(data)
UserDefaults.standard.set(encoded, forKey: "KEY")
}
func loadImage() {
guard let data = UserDefaults.standard.data(forKey: "KEY") else { return }
let decoded = try! PropertyListDecoder().decode(Data.self, from: data)
let image = UIImage(data: decoded)
}