iShot_2022-11-24_10.30.45.pngLinkingObjects
在某些时刻我们需要LinkingObjects为反向绑定。比如一个人有一只狗。
增加绑定后,删除狗,人用有的狗便会自动删除.
需要注意的是:
1.根据业务需要,Person.dogs
为0时,需不需要删除Person
。
2.相同的一只Dog
可以重复添加到Person.dogs
上的。
3.realm.write { 必须在wirte内使用 }
我会:
- 给
Dog
增加@Persisted(primaryKey: true) var id:
,获得所有realm.objects(Dog.self)
,再使用objects.where { $0.id == id}
删除重复的Dog. - 获得所有Person
realm.objects(Person)
- 使用子筛查筛出dogs为0的Person并且删除
objects.where {($0.dogs).count == 0}
- 增加person, 给person.dogs,append(dog)
- 获得所有Person
iShot_2022-11-24_11.07.36.pngobserve
Person 和 Dog也许我们都在不同的业务中需要观察更改并且显示。
注意:
在回调中要使用 [weak self]
否则objectNotificationToken?.invalidate()
不生效。会导致多个地方反复回调
讲个笑话:
在我以为realm.write(withoutNotifying: [notificationToken!])
是指定给某个realm通知发消息。其实是忽略该通知。我调了半天才发现。
网友评论