Я хочу сохранить изображение, используя userdefaults, чего я хочу добиться, это после того, как изображение будет изменено, и приложение завершит его.изменение изображения пользователя все еще там.Как мне добиться этого с userdefaults.
Это мой код, когда пользователь выбирает изображение и сохраняет его в userdefaults
var data: Data? //I make a reference data to save imageData in pickerController
@objc func handleImagePicker() {
let imagePickerController = UIImagePickerController()
imagePickerController.allowsEditing = true
imagePickerController.sourceType = .photoLibrary
imagePickerController.delegate = self
present(imagePickerController, animated: true)
}
@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let editedImage = info[.editedImage] as? UIImage {
guard let imageData = editedImage.jpegData(compressionQuality: 0.5) else { return }
self.data = NSKeyedArchiver.archivedData(withRootObject: imageData)
UserDefaults.standard.set(data, forKey: "profileImageEditedKey")
UserDefaults.standard.synchronize()
profileImageView.image = editedImage.withRenderingMode(.alwaysOriginal)
} else if let originalImage = info[.originalImage] as? UIImage {
guard let imageData = originalImage.jpegData(compressionQuality: 1) else { return }
self.data = NSKeyedArchiver.archivedData(withRootObject: imageData)
UserDefaults.standard.set(data, forKey: "profileImageOriginalKey")
UserDefaults.standard.synchronize()
profileImageView.image = originalImage.withRenderingMode(.alwaysOriginal)
}
dismiss(animated: true)
}
Это код, который я помещаю в viewWillAppear при получении данных после завершения работы приложения
private func fetchData() {
guard let data = data else { return }
guard let image = NSKeyedUnarchiver.unarchiveObject(with: data) as? UIImage else { return }
profileImageView.image = image.withRenderingMode(.alwaysOriginal)
print("fetch...")
}