一个对象需要提交到服务器,我想通过显示lastModified日期/时间和lastSubmitted日期/时间来向用户表明该对象需要提交。

(是的,必须手动提交记录。)

我目前正在监听 NSManagedObjectContextObjectsDidChangeNotification ,检查对象的实体是否为 RetailLocation ,如果是,则设置其 lastModified 日期/时间(当然,仅当 lastModified 不是唯一被修改的属性时)。由于这似乎高度混淆了撤消管理器,因此我使用 performSelector:SOMESEL withObject:retailLocation afterDelay:0.0 来设置 lastModified 属性。

可悲的是,这几乎更糟:这导致两个操作被添加到撤消堆栈中!

有人可以推荐一种在核心数据管理记录中实现 lastModified 属性的好方法吗?或者,我错过了什么?

最佳答案

如果您不希望修改日期可撤销,您可以在进行更改之前在 NSUndoManager 上调用 disableUndoRegistration,并在完成后调用 enableUndoRegistration

如果你需要一个,你可以通过在你的 NSManagedObjectContext 上调用 undoManager 来获得一个指向 NSUndoManager 的指针,但如果你在 iOS 中工作,你应该已经有了一个。

另外,请注意 Apple 建议为此使用 NSManagedObjectContextWillSaveNotification 通知,因为可能不一定会保存更改。

10-08 12:13