【问题标题】:Core Data Annotation - Repairing Missing Delete Propagation核心数据注释 - 修复缺失的删除传播
【发布时间】:2013-01-27 05:46:34
【问题描述】:

我有一个运行良好的程序。没有崩溃,没有错误或任何东西,但是在删除 NSManagedObject 时,控制台中会出现以下消息。

Core Data: annotation: repairing missing delete propagation for to-one relationship

然后,关于这种关系的一些细节。

再一次,这不会使应用程序崩溃并且程序按预期继续运行,但这仍然让我担心。我应该对此做些什么,还是可以从 Core Data 获得一些注释?

提前致谢:)

【问题讨论】:

  • 同样的事情发生在我身上,你在使用嵌套上下文吗?
  • 不,只是常规的核心数据堆栈。

标签: ios objective-c xcode core-data


【解决方案1】:

你应该采取更好的删除策略。

  1. 转到您的 .xcdatamodeld,选择相关关系

  2. 使用反向关系选择您的实体和关系

  3. 选择对删除规则执行的操作

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,但当我为相关关系添加反向关系后,它就消失了。

    【讨论】:

    • 这也解决了我的问题。知道为什么吗?
    • 没有。我只能引用核心数据编程指南,它在多个场合说 逆向关系 设置非常重要:“然而,关于对象图完整性最重要的特征是逆向关系关系和删除规则。", "您通常应该对两个方向的关系进行建模,并适当地指定反向关系。"
    【解决方案3】:

    您必须在删除托管对象后保存上下文。

    删除后:

    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    NSError *error;
    if (![appDelegate.managedObjectContext save:&error]) {
        NSLog(@"Error in Appdelegate>getLocalVersionAddFirstVersion");
    }
    

    就像一个新对象在上下文被保存之前不会保存到存储中 保存后,删除的对象不会从存储中删除,直到 上下文被保存。 (Apple Documentation)

    【讨论】:

      【解决方案4】:

      对我来说,这是一个稍微不同的问题:有一个 孤儿检测,它在保存时立即删除了新创建的对象,因为我忘记将新的父关系添加到isOrphan() 函数。奇怪的是,它导致了这个错误......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-20
        • 1970-01-01
        • 1970-01-01
        • 2012-07-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多