【问题标题】:Core data - Delete Rule problem核心数据——删除规则问题
【发布时间】:2011-08-14 21:00:24
【问题描述】:

我对 coredata 中的删除规则有一个奇怪的问题。我的数据模型没有那么复杂。我在这里只详细说明元素之间的关系:

A
----------
has_many B (optional, delete rule : Cascade)
has_many C (optional, delete rule : Cascade)

B
----------
has C (optional, delete rule : Cascade)
inv_A (delete rule : Nullify)

C
----------
has B (optional, delete rule : Nullify)
inv_A (delete rule : Nullify)

当我删除 B 时,相关的 C 不会被删除。就像级联删除规则不起作用...

你对我做错了什么有提示吗?

感谢您的帮助

编辑

这只是一个重新获取问题。愚蠢的问题......永远不要忘记: A) 保存后重新获取数据库中的数据 B) 使用新的获取结果重新加载表(或使用 NSFetechedResultController)

【问题讨论】:

    标签: iphone core-data has-many cascading-deletes


    【解决方案1】:

    删除规则始终适用于删除其他实体。因此,当您删除 C 对象时,has C 关系将确保 B 也被删除。然而,反过来,has B 关系只设置为无效,所以它就是这样做的。

    为了澄清这种情况,请这样想:如果你只有一个关系,比如 B 引用 C,这意味着 B 有一个 C 类型对象的字段。删除规则唯一有意义的意思是解决如果应该删除它指向的对象,那么应该如何处理该字段的问题。

    【讨论】:

    • 奇怪...我刚刚看到您的编辑:您确定您的问题正确地类似于您的数据模型吗?如果是这样,您的 C 对象应该(正如我解释的那样)仅在相关 B 被删除时被取消,而不是被删除......
    • 很好的澄清情况。这是一个很好的思考方式!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2015-05-29
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多