Я пытаюсь преобразовать изображение, которое пользователь импортировал из рулона камеры, преобразовать изображение в NSData и сохранить его как двоичные данные в CoreData. Мне удалось преобразовать его в двоичный файл и распечатать его, но я не храню значение в основных данных. Мне удалось сохранить строки и другие значения в различных атрибутах объекта, но по какой-то причине двоичные данные не работают.
func savingData(savingImage: UIImage){
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
let managedContext = appDelegate.persistentContainer.viewContext
let userEntity = NSEntityDescription.entity(forEntityName: "Image", in: managedContext)!
let data = savingImage.pngData()! as NSData
if idLabel.text != "" {
let user = NSManagedObject(entity: userEntity, insertInto: managedContext)
user.setValue(idLabel.text, forKeyPath: "id")
user.setValue(descriptionText.text, forKey: "imgdescription")
user.setValue(confidenceLabel.text, forKey: "confidence")
user.setValue(data, forKey: "binary")
do {
try managedContext.save()
dataSaved.text = "Your answers have been saved! Click Home to return."
} catch let error as NSError {
print("Could not save. \(error), \(error.userInfo)")
dataSaved.text="Error!"
}
}
}
}
Это код, который у меня есть для хранения данных. Все значения сохраняются в основных данных, и эти значения могут быть получены в следующем классе.
Я проверил все соединения, трижды проверил, что именование сущности и атрибутов все еще не работает.
У кого-нибудь есть идеи?
РЕДАКТИРОВАТЬ: атрибут «двоичный» хранится как «двоичные данные» в основных данных
func retrieveData() {
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
let managedContext = appDelegate.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Image")
fetchRequest.fetchLimit = 1
fetchRequest.predicate = NSPredicate(format: "id = %@", valueSelected)
fetchRequest.sortDescriptors = [NSSortDescriptor.init(key: "id", ascending: false)]
do {
let result = try managedContext.fetch(fetchRequest)
for data in result as! [NSManagedObject] {
idText.text = data.value(forKey:"id") as? String
descriptionText.text = data.value(forKey:"imgdescription") as? String
confidenceText.text = data.value(forKey:"confidence") as? String
photoView = data.value(forKey:"binary") as? UIImageView
}
} catch {
print("Nothing found.")
}
}
Вот как я это называю в другом классе