gpt4 book ai didi

iphone - 核心数据获取请求失败,原因为 : 'NSInternalInconsistencyException' ,: 'statement is still active'

转载 作者:可可西里 更新时间:2023-11-01 03:30:56 25 4
gpt4 key购买 nike

使用带核心日期的导航 Controller 模板的基本应用布局:

委托(delegate):persistenceCoordinator、managedObjectModel、managedObjectContext

  • RootView:managedObjectContext(来自委托(delegate))、addManagedObjectContext(使用模板中的模式)、fetchResultsController
    • 添加/编辑 View (用于添加对象 A 及其 B 的层次结构)

我有两个对象,A 和 B,它们共享一对一关系/反向关系

使用应用模板中的模式:

  1. 创建一个 addManagedObjectContext
  2. 插入一个实体
  3. 插入添加/编辑 View (已将插入的实体传递给它)

异常(exception)步骤 1:

如果我简单地填写 A 属性并保存一切正常。

  • 对象被插入到数据库(通过 sqlite3 验证)命令行)
  • fetchResultsController 更新 ListView
  • 我可以关闭和打开应用程序(完整关闭/打开不仅仅是应用程序开关)和 ListView 将重新正确获取

如果我然后编辑 A,我可以选择添加 B 并推送添加 B View (并传递 A 实体)

  • 填写B详细信息并保存
  • B 被插入到 A 中managedObjectContext,关系已设置,上下文已保存
  • View 弹出并全部出现好吧
  • 对象都在数据库中与正确的关系
  • 我可以重新加载记录并查看关系,进行编辑等
  • 异常(exception):如果我关闭/重新打开该应用程序,以便触发提取,然后标题中提到的错误将发生。

异常(exception)步骤 2:

如果我在初始“添加”中填写 A 属性和 B 属性

  • 保存 B 会触发 A 的完整保存上下文(如上所述)
  • 保存 A 通过委托(delegate)保存模板建立的关系(并将结果合并到主 managedObjectContext 等)
  • 对象被插入到数据库正确
  • 但是 fetchResultsController不更新以显示新的记录
  • 异常(exception):如果我关闭/重新打开该应用程序,以便触发提取,然后标题中提到的错误将发生。

我试过先保存 A,然后为 B 等添加单独的上下文。至少可以说我很困惑。任何帮助将不胜感激。

干杯,瑞安

最佳答案

听起来您有两个或多个托管对象上下文,而您只需要一个。

我不知道您为什么要在 RootViewController 中使用一个名为 addManagedObjectContext 的方法,或者它会做什么。在除了最复杂的设计之外的所有设计中,您一次只有一个上下文并且它们不重叠。上下文应由应用程序委托(delegate)或专用模型对象持有。您永远不会在每次打开特定 View 时都创建新的上下文。

您可以将不同的上下文全部写入同一个持久存储,所以我认为这就是您在存储中看到数据的原因。但是,如果将一个对象放在一个上下文中的关系中,而将关系的另一端放在另一个上下文中,则无法跨上下文维护图的完整性。我相信这就是产生错误的原因。

关于iphone - 核心数据获取请求失败,原因为 : 'NSInternalInconsistencyException' ,: 'statement is still active',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3078177/

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