我编写了一个小应用程序,该程序使用Core Data和SwiftUI一起为旧的冒险游戏制作了基本的笔记应用程序。我在主/详细配置中使用了NavigationView,其中主列表是注释所针对的人物姓名列表(这是为Tex Murphy等游戏设计的),然后单击它们会导致详细信息视图显示一些textFields更改详细信息。
我遇到的错误是,如果我有一个影响该人姓名的文本字段。有时,当我更改名称时,它将导致应用程序崩溃:线程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)
}
}
人员是通过NavigationView发送的人员对象,名称是状态值(因为我不确定如何使文本字段直接更改人员的名称)