如何基于nil的特定属性删除对象

时间:2016-10-13 22:12:26

标签: ios swift realm

我有三个模特,父母,孩子,孙子。我已经能够正确保存和链接数据。现在,我希望能够在删除父级时删除子级和孙级对象。

父母拥有孩子的财产,孩子拥有孙子的财产。

示例:

class Parent: Object {
    dynamic var name = ""
    var child = List<Child>
}

class Child: Object {
    dynamic var name = ""
    dynamic var parent: Parent?
    var grandChild = List<GrandChild>
}

class GrandChild: Object {
    dynamic var name = ""
    dynamic var child: Child?
}

(这不是我的实际代码,所以如果我搞砸了这里的任何内容,请忽略任何错误。)

我想要做的是删除父对象,这将使子对象中的“父”属性为nil。然后我想删除子对象,如果它的父属性是nil。然后为grandChild做同样的事情。换句话说,做一个级联删除对象。

所以,比如:

如果Object:Child的父属性为nil,则删除Object。

这似乎是一个需要解决的简单问题,但我无法在这些主板上找到很多来自Realm的嵌套数据模型示例,或者我没有以正确的方式提出问题来找到它们。

1 个答案:

答案 0 :(得分:0)

当前不支持Realm中的级联删除,因此您必须手动删除子实例。您可以在删除父项之前使用LinkingObjects删除所有子项,或只查询删除父项后parent == nil的所有子实例并删除它们。在此处查看更多可能的解决方案:https://github.com/realm/realm-cocoa/issues/1186