如何在更改之前获取Realm对象的值?

时间:2018-01-27 11:24:21

标签: ios realm

如何在更改对象之前获取对象的值?看起来领域和对象观察者只有在提交更改后才能调用,无法找到以前的状态。我正在寻找与Core Data提供的NSManagedObjectContextWillSaveNotification相同的东西。我正在使用Objective-C或Swift。

1 个答案:

答案 0 :(得分:0)

如果您使用对象通知,则文档会说:

  

如果更改了对象的属性,将使用ObjectChange.change调用该块。枚举将包含一系列PropertyChange值。这些值中的每一个都包含已更改的属性的名称(作为字符串),前一个值和当前值。

事实上,代码示例显示了如何访问newValueoldValue

token = stepCounter.observe { change in
    switch change {
    case .change(let properties):
        for property in properties {
            if property.name == "steps" && property.newValue as! Int > 1000 {
                print("Congratulations, you've exceeded 1000 steps.")
                token = nil
            }
        }
    case .error(let error):
        print("An error occurred: \(error)")
    case .deleted:
        print("The object was deleted.")
    }
}

我还建议在Object.swift

中查看PropertyChange的声明

您必须注册每个对象的通知,但只能通过注册来自Realm的通知来了解这些更改。不幸的是,它不像NSManagedObjectContextWillSaveNotification那么灵活。