删除所有嵌套数据

Deleting all nested data

我有四个 模型Subject > Topic > Content > Block.

我应该怎么做?

单击您的 xcdatamodel 文件。单击您想要的关系。单击检查器和 select 删除规则。在您的情况下,您想从主题>主题等级联下来,所以只需 select 从每个级联。

在检查器中的删除规则下拉菜单中选择级联。

[2

我试着把它放在评论里,但是它太小了,看不到。我不建议强制使用 CoreData 我认为问题可能出在其他地方,我肯定会考虑一下。但在紧要关头,您可以删除引用。

我认为这段代码是正确的:

        func delete(_ item: NSManagedObject) {
        let context = item.managedObjectContext!
        
        switch item.entity.name {
            case .some("Subject"):
                (item as! Subject).topic.forEach({delete([=10=])})

            case .some("Topic"):
                (item as! Topic).content.forEach({delete([=10=])})

            case .some("Content"):
                (item as! Content).block.forEach({delete([=10=])})

            default:
                break
        }
       
        context.delete(item)
    }

我现在没有快速测试的方法。 但是像这样的递归可能是你最好的选择。