ios - 了解一对多的核心数据删除规则

我对核心数据关系删除规则有点模糊。所以如果有人可以帮我回答一些关于他们的问题。

我有实体 A 和 B。A 与 B 有一对多关系,B 与 A 有一对一关系。

A>B

现在,如果我将 A 处的删除规则设置为 Cascade,我知道它将删除与其相关的所有 B。但是如果我将它设置为 Nullify,它会将 Bs 设置为 NIL 还是将外键设置为 Nil?

我到处查看从 B 到 A 的关系,我应该将其设置为 Nullify 吗?这只会使 A 处的“B 对象”无效吗?或者它会使与 A 相关的所有 B 无效?级联呢?它会删除与 A 关联的所有 B,还是只删除特定的 B?

或者我只是在从 B 到 A 的关系上使用“No Action”,这样当我删除 B 时,A 不会发生任何变化,但对 B 的引用将不存在?

我对这些很困惑,所以请原谅我的问题。

谢谢。

最佳答案

如果将删除规则设置为“nullify”并删除 A 对象,则 Bs 中对该对象的引用将被删除。反之亦然。如果您有级联并删除 B,那么它将删除 B 指向的 A。然后它将遵循从 A 到剩余 B 的删除规则(级联或无效)。

您设置的规则实际上取决于您的数据模型。如果 A 是客户,B 是他们的订单,那么您可以将 A->B 规则设置为拒绝(如果客户有订单,则防止 A 被删除)或级联(删除客户时删除订单)。 B->A 规则可能是“无效”。如果订单被删除,只需从客户那里删除对该订单的引用。

关系删除规则在 Apple Core Data Programming Guide 中描述。

https://stackoverflow.com/questions/29255368/

相关文章:

objective-c - Xcode:可以为协议(protocol)接口(interface)所需

ios - 选择时如何更改 UITableViewCell 的颜色?

objective-c - 实现 -hash/-isEqual :/-isEqualTo. ..:用

ios - AVPlayer 和 Video 的屏幕截图

ios - 检测设备是否支持电话?

ios - 我可以设置 `attributedText` 的 `UILabel` 属性吗

objective-c - 仅在 UIView 顶部的圆角

ios - 不支持推送导航 Controller

iphone - 所有文本字段的 resignFirstResponder

ios - 使用 Xcode 进行模拟时,PerformFetchWithCompletionHan