Jam*_*nay 27 iphone xcode core-data objective-c ios
我在两个实体之间有一个核心数据关系,如下所示:
Entity A Entity B
aRelationship <-------------->> bRelationship
Run Code Online (Sandbox Code Playgroud)
将删除规则设置为级联.
也许我有这个错误,但我认为如果这两个关系的删除规则都设置为"Cascade",那么以下时间是......
[context deleteObject:EntityA];
Run Code Online (Sandbox Code Playgroud)
...它还会删除与之关联的所有实体B. 但是,当我记录我的所有实体B时,我似乎错了.
请问有人可以解释一下我的困惑吗?
非常感谢你.
Tec*_*Zen 90
虽然在图形数据模型编辑器中并不是立即显示每个相关联关系,即每个
<-->
Run Code Online (Sandbox Code Playgroud)
......实际上是两个独立的关系,每个关系都有自己的删除规则 删除具有删除规则的实体的对象时,将激活删除规则.
因此,如果在数据模型编辑器中,您有两个实体Alpha并且Beta具有关系:
Alpha.betas<-->>Beta.alpha
Run Code Online (Sandbox Code Playgroud)
...那么你真的有两个这样的关系:
Alpha.betas--(delete rule)-->>Beta.alpha
Beta.alpha--(delete rule)-->Alpha.betas
Run Code Online (Sandbox Code Playgroud)
您永远不想像这样设置删除规则:
Alpha.betas--(cascade)-->>Beta.alpha
Beta.alpha--(cascade)-->Alpha.betas
Run Code Online (Sandbox Code Playgroud)
...因为删除任何一个Beta实例将删除Alpha将触发删除所有相关Beta对象的关联对象.根据数据模型的详细信息,互惠级联可以意外删除大部分数据.
你真正想要的是:
Alpha.betas--(cascade)-->>Beta.alpha
Beta.alpha--(nullify)-->Alpha.betas
Run Code Online (Sandbox Code Playgroud)
现在,当您删除Alpha对象时,它将删除所有关联的Beta对象.
当级联被阻止时,通常是需要关系的问题.没有数据模型的细节,无法确定.
| 归档时间: |
|
| 查看次数: |
16623 次 |
| 最近记录: |