我最近想知道这个问题。我担心下面给出的核心数据实施的长期问题。
假设我们有任务 NSManagedObject
与相册对象有一对一的关系 Nullify 删除规则双向。然后相册与具有相同删除规则的照片对象具有一对多的关系。
问题是理论上的。如果任务对象被删除会发生什么,但开发人员不会手动删除与任务相关的相册和照片对象?这种方式是否存在数据损坏的可能性?或者核心数据的规模会不会增加而不会抱怨?
事先感谢您的帮助。
答案 0 :(得分:2)
如果任务对象被删除会发生什么,但开发人员不会删除与任务相关的相册和照片对象强>手动?
然后适用正常的“无效”行为。从Album
到Task
的反向关系设置为nil,但没有其他更改。使用“nullify”即可发生所有事情,当删除相关对象时,关系将设置为nil。
是否有可能以这种方式破坏数据?
好吧,你得到一个没有关联Album
的{{1}}。这是否会被视为腐败取决于您的具体要求。如果每个Task
必须拥有Album
,那么您可能会认为它已损坏。另一方面,如果这种关系是可选的,那么将它设为零就可以了。在这种情况下,底层持久性存储文件(可能是SQLite)不会比任何其他情况更容易被破坏。
或者Core Data的规模会不会增加而不会抱怨?
删除托管对象不会使持久性存储文件增长。如果您的意思是,相关的Task
和Album
对象是否仍然存在,那么是的,因为这就是您所描述的设计的工作方式。这是否有问题取决于您的具体要求。