如何在更改对象之前获取对象的值?看起来领域和对象观察者只有在提交更改后才能调用,无法找到以前的状态。我正在寻找与Core Data提供的NSManagedObjectContextWillSaveNotification相同的东西。我正在使用Objective-C或Swift。
答案 0 :(得分:0)
如果您使用对象通知,则文档会说:
如果更改了对象的属性,将使用ObjectChange.change调用该块。枚举将包含一系列PropertyChange值。这些值中的每一个都包含已更改的属性的名称(作为字符串),前一个值和当前值。
事实上,代码示例显示了如何访问newValue
和oldValue
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
那么灵活。