Создание нескольких объектов в Core Data с помощью ScanningDocumentViewController Swift 5 / Swift UI - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь создать сканер, способный извлекать имена и идентификационные номера из листа и назначать их в качестве новых объектов в базовых данных. Используя макет 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 будет принята с благодарностью.

...