在Realm`Results`对象上观察到的集合更改是否保证与所有链接的`Results`对象同步?

时间:2017-06-26 16:10:29

标签: realm

假设我有两个Results,第二个链接来自第一个filter。在这种情况下,它是一个allPeople集合和一个adults集合,只对18岁或以上的人进行过滤。

let realm = try! Realm()

let sortDescriptors = [SortDescriptor(keyPath: "lastName", ascending: true),
                       SortDescriptor(keyPath: "firstName", ascending: true)]

let allPeople = realm.objects(Person.self).sorted(by: sortDescriptors)

let adults = allPeople.filter("age >= 18")

allPeople.addNotificationBlock { changes in
    // Are the collections in sync here?
}

通知块中的更改是否保证会反映在allPeople集合和adults集合中?我处理更改通知时,两个集合是否可能不同步?

1 个答案:

答案 0 :(得分:1)

整个Realm和所有相关对象都是原子级的,并且不应该观察到不一致的状态。在通知块中,所有Realm对象和结果都将反映通知所针对的新版本。

唯一需要注意的是,显然无法同时调用多个通知块,因此如果您同时收到allPeopleadults的通知,则无法依赖其他通知的事情。