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

标签 ios objective-c swift core-data relationships

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

我有实体 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 中描述。

关于ios - 了解一对多的核心数据删除规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29255368/

相关文章:

ios - 如何在后台加载 UIImageView 对象?

objective-c - 多个对象订阅 NSNotification (Objective-c)

ios - 在 Swift 上的哪里存储 API key ?

ios - Swift版本嵌入外部Framework

ios - 如何强制标签栏项目在点击时转到该项目的根级别

ios - iOS 10 后无法下载点播资源内容

iphone - Facebook 在 iPhone 中的最新 IOS SDK 问题?

ios - 当 react native 应用程序 View 加载时,如何在 native ios 上调用 ViewController 类?

objective-c - 为 UITableView 中的部分添加背景图片

ios - NSError 没有可见界面 iOS 8.1