领域链接对象和删除
Realm linking objects and deletions
在 Realm 中,如果我有一个 linkingOjbects 关系设置,我应该如何处理删除而不是留下孤儿,尤其是当它是多对多反向关系时?
使用 Realm Person 和 Dog 示例,假设此实例中的 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]
A 不再需要走路,那么正确的做法是
personA.dogs.remove(objectAtIndex:idxOfFido)
这会更新 personA 中的引用,但它也会更新 dog 中的引用吗?
其次如果 personB 也不再需要走路 Fido 我会做
personB.dogs.remove(objectAtIndex:idxOfFido)
但这会不会在我的 Dog 领域中留下对 Fido 的孤立引用,因为它不再被任何人走过?然后由我做一个检查,例如
if fido.walkers.count == 0 {
//remove Fido
}
1.) 链接对象是"other side of the relationship",所以如果你在一侧更新它,那么另一侧也会更新。从 persons.dog
中删除 fido
将从 dog.walkers
中删除 person
。
2.) 狗没有被人遛并不意味着它已经死了,所以是的,您需要手动删除孤儿狗。
在 Realm 中,如果我有一个 linkingOjbects 关系设置,我应该如何处理删除而不是留下孤儿,尤其是当它是多对多反向关系时?
使用 Realm Person 和 Dog 示例,假设此实例中的 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]
A 不再需要走路,那么正确的做法是
personA.dogs.remove(objectAtIndex:idxOfFido)
这会更新 personA 中的引用,但它也会更新 dog 中的引用吗?
其次如果 personB 也不再需要走路 Fido 我会做
personB.dogs.remove(objectAtIndex:idxOfFido)
但这会不会在我的 Dog 领域中留下对 Fido 的孤立引用,因为它不再被任何人走过?然后由我做一个检查,例如
if fido.walkers.count == 0 {
//remove Fido
}
1.) 链接对象是"other side of the relationship",所以如果你在一侧更新它,那么另一侧也会更新。从 persons.dog
中删除 fido
将从 dog.walkers
中删除 person
。
2.) 狗没有被人遛并不意味着它已经死了,所以是的,您需要手动删除孤儿狗。