Я пытаюсь создать сканер, способный извлекать имена и идентификационные номера из листа и назначать их в качестве новых объектов в базовых данных. Используя макет SwiftUI и реализуя структуру UIViewControllerRepresentable, которая создает класс VNDocumentCameraViewController, я смог вызвать класс TextRecognizer, который успешно извлекает имена и идентификаторы из листа и помещает их в массив новых объектов.
func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFinishWith scan: VNDocumentCameraScan) {
guard scan.pageCount >= 1 else {
controller.dismiss(animated: true)
return
}
let recognizer = TextRecognizer(cameraScan: scan)
recognizer.configureOCR()
recognizer.processImage(scan.imageOfPage(at: 0), withCompletionHandler: completionHandler)
controller.dismiss(animated: true)
print("Document camera view controller did finish with ", scan)
}
Затем я пытаюсь сохранить каждый новый объект в Базовые данные в поле For l oop в классе TextRecognizer.
func createPerson() {
guard self.people.count > 0 else { return }
for person in people {
let newPerson = Person(context: self.managedObjectContext)
newPerson.name = person.name
newPerson.idNumber = person.idNumber
newPerson.id = UUID()
do {
try self.managedObjectContext.save()
print("Person Saved.")
} catch {
print(error.localizedDescription)
}
}
}
После закрытия сканера список людей успешно создан, но при сохранении в Core Data я получаю следующую ошибку для каждого человека в списке людей, и мой список остается пустым.
"Операция не может быть завершена. (Foundation._GenericObjCError error 0.)"
Я также попытался передать контекст управляемого объекта через каждый класс и структура, но это все еще, кажется, не помогает.
@Environment(\.managedObjectContext) var managedObjectContext
Любая помощь, чтобы сделать эту работу с использованием SwiftUI будет принята с благодарностью.