删除所有嵌套数据
Deleting all nested data
我有四个 模型:Subject
> Topic
> Content
> Block
.
删除一个Subject
的时候我也想删除嵌套的Topic
,Content
和Block
.
当删除一个Topic
我想删除嵌套的Content
和Block
.
当删除一个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)
}
我现在没有快速测试的方法。
但是像这样的递归可能是你最好的选择。
我有四个 模型:Subject
> Topic
> Content
> Block
.
删除一个
Subject
的时候我也想删除嵌套的Topic
,Content
和Block
.当删除一个
Topic
我想删除嵌套的Content
和Block
.当删除一个
Content
我想删除嵌套的Block
.
我应该怎么做?
单击您的 xcdatamodel 文件。单击您想要的关系。单击检查器和 select 删除规则。在您的情况下,您想从主题>主题等级联下来,所以只需 select 从每个级联。
在检查器中的删除规则下拉菜单中选择级联。
[
我试着把它放在评论里,但是它太小了,看不到。我不建议强制使用 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)
}
我现在没有快速测试的方法。 但是像这样的递归可能是你最好的选择。