领域链接对象和删除

Tom*_*yBs 0 realm swift realm-list

在 Realm 中,如果我有一个 linkingOjbects 关系设置,我应该如何处理删除而不是留下孤儿,尤其是当它是多对多逆关系时?

使用 Realm Person 和 Dog 示例,假设此实例中的 Person 是遛狗者,并且可以在不同的日子由不同的人遛狗

所以一个 Dog 对象被分配给多个 Person 对象。每个 Person 对象都可以看到 Dog。假设以下对象结构和数据

  Person : Object {
     dynamic var name:String = ""
     let dogs = List<Dog>()
  }

  Dog : Object {
    dynamic var name: String = ""
    let walkers = LinkingObjects<fromType: Person.self, property:"dogs">
  }


Person A
dogs = [Fido,Rover]

Person B
dogs = [Fido, Rover]
Run Code Online (Sandbox Code Playgroud)

人 A 不再需要走 Fido,所以正确的方法是

   personA.dogs.remove(objectAtIndex:idxOfFido) 
Run Code Online (Sandbox Code Playgroud)

这会更新 personA 中的引用,但它也会更新 dog 中的引用吗?

其次,如果 personB 也不再需要步行 Fido 我会做的

  personB.dogs.remove(objectAtIndex:idxOfFido)
Run Code Online (Sandbox Code Playgroud)

但这会不会在我的狗领域留下一个对 Fido 的孤儿参考,因为它不再被任何人走过?那么是否由我进行检查,例如

 if fido.walkers.count == 0 {
     //remove Fido
 }
Run Code Online (Sandbox Code Playgroud)

Epi*_*rce 5

1.) 链接对象是“关系的另一边”,所以如果你在一侧更新它,那么另一边也会更新。移除fidofrompersons.dog将移除personfrom dog.walkers

2.) 狗没有被人遛并不意味着它已经死了,所以是的,你需要手动删除孤儿。