Вы не можете сохранить UIImage непосредственно в Core Data.Вместо этого вам придется преобразовать изображение в NSData
(как в «требуемый тип = NSData» в вашем сообщении об ошибке).Вот расширение UIImage
для этого:
extension UIImage {
func jpegData(withCompressionQuality quality: CGFloat) -> Data? {
return autoreleasepool(invoking: {() -> Data? in
return UIImageJPEGRepresentation(self, quality)
})
}
}
quality
- это значение от 0,0 до 1,0, причем последнее представляет максимальное качество сжатого изображения JPEG.Использование autoreleasepool
помогает избежать проблем с утечкой памяти, возникающих при использовании UIImageJPEGRepresentation
.
. Затем вы можете сохранить изображение с помощью этого кода:
if let imageData = imageView.image .jpegData(withCompressionQuality: 1.0) {
newUser.setValue(imageData, forKey: "image")
}
Кстати, вы также можете конвертироватьв PNG вместо JPEG, который без потерь, если это то, что вам нужно.Используйте UIImagePNGRepresentation
вместо UIImageJPEGRepresentation
.