领域链接对象和删除

时间:2017-05-02 11:07:18

标签: swift realm realm-list

在Realm中,如果我有一个linkedOjbects关系设置,我应该如何处理删除而不是留下孤儿,特别是当它是多对多的反对关系时?

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

因此将Dog对象分配给多个Person对象。每个Person对象都可以看到Dog。假设有以下对象结构和数据

f1
f2

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

  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]

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

其次,如果personB也不再需要走Fido我会做

   personA.dogs.remove(objectAtIndex:idxOfFido) 

但是这会在我的Dog领域留下一个孤立的Fido引用,因为它不再被任何人走过了吗?那么我是否应该做一个检查,如

  personB.dogs.remove(objectAtIndex:idxOfFido)

1 个答案:

答案 0 :(得分:3)

1。)链接对象是“关系的另一面”,所以如果你在一边更新它,那么另一面也会更新。从fido删除persons.dog将从person中删除dog.walkers

2。)只是因为没有人走路的狗并不意味着它已经死了,所以是的,你需要手动删除孤儿。