Core data 核心数据“;垃圾收集“;

Core data 核心数据“;垃圾收集“;,core-data,Core Data,CoreData是否提供类似于垃圾收集(或引用计数)的功能,以便在实体未被其他实体引用时,可以自动从持久性存储中删除它们 通常,实体是“根实体”。一旦创建,它们将一直存在,直到显式删除 但是,我想将一些实体标记为不是根实体。只有当另一个实体引用了它们并最终被根实体引用时,这些实体才应该存在 作为一个具体的例子,用户实体可能有许多(可能是共享的)文档实体用户被标记为根,并且在明确删除之前一直存在文档未标记为根,仅在一个或多个用户引用它时才存在 谢谢。核心数据具有上述删除规则。您可以在用户和文档之间

CoreData是否提供类似于垃圾收集(或引用计数)的功能,以便在实体未被其他实体引用时,可以自动从持久性存储中删除它们

通常,实体是“根实体”。一旦创建,它们将一直存在,直到显式删除

但是,我想将一些实体标记为不是根实体。只有当另一个实体引用了它们并最终被根实体引用时,这些实体才应该存在

作为一个具体的例子,用户实体可能有许多(可能是共享的)文档实体用户被标记为,并且在明确删除之前一直存在文档未标记为,仅在一个或多个用户引用它时才存在


谢谢。

核心数据具有上述删除规则。您可以在
用户
文档
之间的关系上设置删除规则,以便在删除
用户
时,任何关联的
文档
实体都将随之删除

这不是“垃圾收集”,因为这意味着释放不再使用的内存,而是引用完整性管理,以便数据存储不具有悬空实体。但是,由开发人员使用对象模型编辑器定义规则

如果用户上的文档关系指定了级联,并且一个文档由一组用户共享,那么如果删除了引用该文档的任何用户,该文档是否会被删除?还是仅当最后一个引用它的用户被删除时才将其删除


如果您有多对多并设置了级联,则“是”将删除删除的第一个父级上的子级。如果您需要在没有引用的情况下删除子对象,那么您需要在父实体的子类中的代码中处理该子对象。我建议查看
-preparefordelection
方法。

通过“删除实体”,您的意思是将它们从内存或持久存储中删除?谢谢–后者。将更新。看起来我需要阅读删除规则。并且可能不支持自动删除共享实体。请指定反向关系的最小计数(即,文档必须至少有1个用户),这样,如果它最终成为孤立的,则验证失败?谢谢。(我可能应该说“自动内存管理”,因为这并不意味着管理机制)。如果
用户
上的
文档
关系指定了
级联
,并且
文档
由一组
用户
共享,如果删除了引用该文档的任何
用户
,该文档是否会被删除?还是仅当最后一个引用它的
用户被删除时才将其删除?如果您有多对多并设置了级联,则“是”将删除第一个被删除父项上的子项。如果您需要在没有引用的情况下删除子对象,那么您需要在父实体的子类中的代码中处理该子对象。我建议查看
-preparefordelection
方法。顺便说一句,“自动内存管理”也意味着管理:):-)是的…但这并不意味着一种特定的机制:垃圾收集/引用计数/内存耗尽时重新启动系统。因此,基本上,在一般情况下,核心数据没有自动内存管理。那
preparefordelection
看起来正是我需要的。谢谢–我可以编辑您的答案以添加澄清吗?