项目关系,并实现 Category.prepareForDeleti-6ren">
gpt4 book ai didi

ios - 使用 "No Action"删除规则并改用 prepareForDeletion

转载 作者:行者123 更新时间:2023-11-29 13:27:59 25 4
gpt4 key购买 nike

我目前有两个实体,一个类别实体和一个项目实体,其中 Category:Item 是 1:m。

我已将“无操作”规则应用于类别 -> 项目关系,并实现 Category.prepareForDeletion 以在删除类别之前将类别中的所有项目移动到一个特殊的全能类别(全能类别不可删除)。

- (void)prepareForDeletion {
Category *misc = [Database theMiscCategory];
[misc addItems:self.items];
[super prepareForDeletion];
}

我的问题是:我遗漏了什么吗?如果没有,我该如何关闭 XCode 关于“无操作”是一项高级功能的警告?

FTR,我没有使用 nullify,因为它更方便应用程序的其他区域将内容转储到“杂项”类别中,而不是处理具有 null 类别的项目。我最初确实尝试过,但出现了一些意想不到的行为——如果我先调用 super,在我收集要更改的项目集之前,关系就被取消了,如果我把它放在之后,那么与新类别的关系就得到了作废。我想我可以收集它们,然后调用 super,然后设置新类别,但这看起来很笨拙。

所以我确实认为“无操作”是我想要的,只是想确保我没有遗漏我应该在 prepareForDeletion 中管理的任何其他内容。

最佳答案

“No Action”生成警告的原因是管理 CategoryItem 之间的关系现在留给您了。

因此,如果您有一个名为 myCategoryCategory,在 myCategory.items 中有 5 个 Item 对象,并且您删除了 myCategory 时,5 个Item 对象仍然认为它们与已被删除的myCategory 有关系。

您最好的选择是将规则改回“无效”,让 Core Data 为您处理关系管理。您仍然可以执行您在 prepareForDeletion 中执行的操作,因为此时 self.items 仍包含 Item 对象。

如果出于某些其他原因必须保留“无操作”规则,则需要确保 self.items 中的每个 Item 都得到它的 .category 属性在 prepareForDeletion 期间设置为 nil。

关于ios - 使用 "No Action"删除规则并改用 prepareForDeletion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12624659/

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