Я пытаюсь сохранить изображение профиля пользователя с помощью CoreData, но не понимаю, что делать дальше.
Я знаю, что мне нужно создать объект, и я прочитал, что он должен быть типа BinaryData, но тогда я не понимаю, как его сохранить и загрузить.
Я пробовал так:
let profilePicture = UserPicture(context: AppDelegate.viewContext)
profilePicture.userProfilePicture = profilPictureImageView.image?.pngData()
try? AppDelegate.viewContext.save()
Но не работает. Я не нашел ничего, что могло бы мне помочь.
Не следует хранить полные изображения в Core Data. Вместо, вы должны сохранить образ в Documents Directory и сохранить путь для этого образа внутри Core Data
@ShubhamBakshi Вы можете добавить изображение в Core Data и выбрать параметр «использовать внешние файлы» для атрибута в сущности Core Data; Затем Core Data будет управлять ссылкой на BLOB-объект за вас, включая удаление файла при удалении объекта из Core Data. Это проще, чем самостоятельно управлять ссылками.
@ Paulw11 Спасибо, я не знал об этом. Большое спасибо, дружище!





Для сохранения изображения в CoreData вы должны преобразовать изображение в тип DATA, после чего вы можете сохранить его в CoreData. Этот код может быть полезен для сохранения изображения в CoreData.
@IBOutlet weak var profileimg: UIImageView?
let data = (profileimg?.image)!.pngData()
let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext
let newUser = NSEntityDescription.insertNewObject(forEntityName: "Entity", into: context!)
newUser.setValue(data, forKey: "img")
do {
try Constant.context?.save()
}
Убедитесь, что вы вводите правильный ключ. Обязательно установите флажок Разрешить внешнее хранилище в инспекторе модели данных, но я не рекомендую сохранять изображение в CoreData. Надеюсь, это будет полезно.
вы можете преобразовать изображения в строку и сохранить их в основных данных.
self.selectedImage?.jpegData(compressionQuality: 1)?.base64EncodedString()
и загружать изображения из основных данных с помощью этого кода
if let decodedData = Data(base64Encoded: todo.img as! String, options: .ignoreUnknownCharacters) {
let image = UIImage(data: decodedData)
Image(uiImage: image!)}
Возможный дубликат Основные данные сохраняют UIImage