2022-11-24 使用RealmSwift 个人理解记录

LinkingObjects

iShot_2022-11-24_10.30.45.png

在某些时刻我们需要LinkingObjects为反向绑定。比如一个人有一只狗。
增加绑定后,删除狗,人用有的狗便会自动删除.
需要注意的是:
1.根据业务需要,Person.dogs为0时,需不需要删除Person
2.相同的一只Dog可以重复添加到Person.dogs上的。
3.realm.write { 必须在wirte内使用 }

我会:

  1. 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)

observe

iShot_2022-11-24_11.07.36.png

Person 和 Dog也许我们都在不同的业务中需要观察更改并且显示。
注意:
在回调中要使用 [weak self]
否则objectNotificationToken?.invalidate() 不生效。会导致多个地方反复回调

讲个笑话:
在我以为realm.write(withoutNotifying: [notificationToken!])是指定给某个realm通知发消息。其实是忽略该通知。我调了半天才发现。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容