Сбой основных данных SwiftUI в приложении MacOS с NavigationView - PullRequest
0 голосов
/ 11 декабря 2019

Я написал небольшое приложение, которое использует Core Data вместе с SwiftUI, чтобы сделать базовое приложение для заметок для старых приключенческих игр. Я использую NavigationView в конфигурации master / detail, где master list - это список имен людей, для которых предназначены заметки (это разработано для игр, таких как Tex Murphy), и при нажатии на них в подробном представлении отображаются некоторые текстовые поля. изменить детали.

Ошибка, которую я бью, заключается в том, что если у меня есть текстовое поле, влияющее на имя человека. Иногда, когда я меняю имя, происходит сбой приложения с: Поток 1: EXC_BAD_INSTRUCTION (код = EXC_i386_INVOP, субкод = 0x0). Этот сбой является относительно случайным, когда он может произойти около 10% времени. Если я сделаю основной вид вместо того, чтобы показывать любой другой текст, кроме имени человека, то он не падает. Обеспечение изменения имени только в главном потоке не имеет никакого эффекта, поэтому я не думаю, что это проблема безопасности потока. К сожалению, отладчик здесь не особо полезен, поскольку я не могу изолировать его при сбое.

Есть идеи?

Вот код для изменения имени человека:

                    TextField("Enter name", text: $name) {
                        self.person.name = self.name
                        do {
                            try self.managedObjectContext.save()
                        } catch {
                            print(error)
                        }
                    }

Где person - это объект person, отправляемый через NavigationView, а name - значение состояния (поскольку я не уверен, как текстовое поле может изменить имя человека напрямую)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...