gpt4 book ai didi

ios - 核心数据错误 - 语句仍处于事件状态 - 在主线程中

转载 作者:行者123 更新时间:2023-11-30 13:31:06 24 4
gpt4 key购买 nike

应用程序第一次在模拟器中运行良好,但是一旦将新数据保存到核心数据,应用程序将不会再次启动 - 在第一个 View 加载之前崩溃,并出现未捕获的异常“NSInternalInconsistencyException”,原因:“语句仍然处于事件状态”。控制台中有 75 行预崩溃操作,但没有什么突出的(在我不熟练的眼中)。

如果删除,应用程序可以重复启动,直到新数据保存到核心数据。保存新数据后,简单地停止运行应用程序或退出模拟器并没有帮助,它仍然在启动过程中崩溃。

Stackoverflow 和苹果文档一致认为它与线程有关,但我的代码有点简单 - 一切都在主线程上。我很乐意找到可以快速尝试的方法或快速流程来确定原因/解决方案。

我在 AppDelegate 类中使用默认的 xcode 7 核心数据堆栈。样本数据最初通过一种方法加载到 Core Data 中,然后从 core data 中成功加载。保存新记录后,(而不是重新启动)新添加的数据将从 Core Data 成功加载。该问题仅在重新启动时出现。

在代码中,当实例化新的记录 View Controller 时,我在prepareForSegue方法中实例化两个具有单独实体的托管对象:

if segue.identifier == "newRecord"
{
let controller = (segue.destinationViewController as! NewRecordVC)

let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate // instantiate the delegate methods in AppDelegate

controller.managedContext = appDelegate!.managedObjectContext // create context from delegate methods

let recordEntity = NSEntityDescription.entityForName("RecordData", inManagedObjectContext: controller.managedContext)
let locationEntity = NSEntityDescription.entityForName("Location", inManagedObjectContext: controller.managedContext)

controller.location = Location(entity: locationEntity!, insertIntoManagedObjectContext: controller.managedContext)
controller.record = Record(entity: recordEntity!, insertIntoManagedObjectContext: controller.managedContext)

print("segueing")
}

在新的记录 View Controller 中,定义了托管对象属性值,并在展开时保存托管上下文。

    if (segue.identifier == "UnwindSegue")
{
updateRecord() // managed object properties updated

do
{
try managedContext.save() // commit changes / save context
}
catch
{
print("There is some error.") // if error
}
}

当应用返回主视图时,将从 Core Data 中获取新记录并显示在表格上。

但是当我重新启动应用程序时 - 悲伤。

最佳答案

我了解到,当苹果“阻止”某件事时,最好远离它。

enter image description here

将子类中的覆盖 init 更改为 awakeFromInsert 修复了该问题,按照doc.s 。谢谢马库斯·扎拉。

关于ios - 核心数据错误 - 语句仍处于事件状态 - 在主线程中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36577216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com