gpt4 book ai didi

iphone - Coredata删除规则困惑,xcode

转载 作者:IT王子 更新时间:2023-10-29 07:52:07 25 4
gpt4 key购买 nike

我在两个实体之间有一个 Core Data 关系,它是这样的:

Entity A                        Entity B
aRelationship <-------------->> bRelationship

将删除规则设置为级联。

也许我有这个错误,但我认为如果这两个关系的删除规则都设置为“级联”,那么以下什么时候...

[context deleteObject:EntityA];

...它还会删除所有与其关联的实体 B。然而,当我记录我所有的实体 B 时,我似乎错了。

有人可以解释一下我的困惑吗?

非常感谢。

最佳答案

虽然在图形数据模型编辑器中不是很明显每个相互关系,即每个

<--> 

...实际上是两个独立的关系,每个关系都有自己的删除规则。当具有删除规则的实体的对象被删除时,删除规则被激活。

因此,如果在数据模型编辑器中您有两个实体 AlphaBeta 具有以下关系:

Alpha.betas<-->>Beta.alpha

…那么你真的有两个这样的关系:

Alpha.betas--(delete rule)-->>Beta.alpha
Beta.alpha--(delete rule)-->Alpha.betas

永远想要设置这样的删除规则:

Alpha.betas--(cascade)-->>Beta.alpha
Beta.alpha--(cascade)-->Alpha.betas

… 因为删除任何一个 Beta 实例都会删除关联的 Alpha 对象,这将触发所有相关的 Beta 对象的删除。根据您的数据模型的详细信息,相互级联可能会意外删除您的大量数据。

你真正想要的是:

Alpha.betas--(cascade)-->>Beta.alpha
Beta.alpha--(nullify)-->Alpha.betas

现在,当您删除 Alpha 对象时,它会删除所有关联的 Beta 对象。

当一个级联被阻塞时,通常是一个必需的关系有问题。如果没有数据模型的详细信息,则无法确定。

关于iphone - Coredata删除规则困惑,xcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7150943/

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