2017-02-03 57 views
1

我对Core Data非常熟悉,但是我还没有发现Core Data关系的任何实际用途。我在概念上知道他们应该做什么,但他们似乎没有执行任何事情。标准的概念,如主键/外键,级联删除,删除一个你不应该因为关系约束而产生的值似乎没有被强制执行。在现实世界中使用核心数据关系吗?

我看完所有的错误吗?核心数据关系实际上是否具有可执行的约束?

+0

这可能有助于:“对象验证”中的“核心数据验证如何工作”(https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/ObjectValidation.html#//核心数据编程指南“中的”apple_ref/doc/uid/TP40001075-CH20-SW1)“部分。 – pbasdf

回答

2

是的,您可以通过设置不同的删除规则来控制关系。

咨询本指南的详细信息,可配置点:Creating Managed Object Relationships

值得一提的是,规则只在save()执行。

+1

谢谢。因此,核心数据关系的整个世界只在保存()期间起作用?我想我对这个话题的思考并不遥远。 – 4thSpace

+0

还检查这个答案,它有一些实际的例子:http://stackoverflow.com/questions/14837832/when-does-core-data-nullify-rule-update-relations – hybridcattt

4

你似乎在思考SQL风格术语中的核心数据,这是一个错误。它的API不是SQL-ish,即使它经常用作类似于数据库的东西。

大多数直接 - 外键不是“标准概念”,除非您假定核心数据应遵循SQL规则。核心数据中的关系通常用代替外键。您使用关系来指示一个对象与某个其他对象相关。这与SQL可能使用外键将一个表中的条目与另一个表中的条目相关联的方式类似,但这不是同一个事物。

他们在“现实世界”中使用吗?当然,如果核心数据没有关系,它的用处就会小得多。它们是具有属性的对象的核心数据等价物,该属性也是某种对象。