【发布时间】:2014-10-21 09:25:43
【问题描述】:
我正在寻找一种方法来了解 Core Data 实体何时真正从数据存储中删除。
我将NSUndoManager 连接到我的NSManagedObjectContext,到目前为止一切正常。
现状
我正在构建一个应用程序,允许用户创建Rooms 并在每个房间添加一些图片。当用户想要创建一个新房间时,我使用以下代码在 NSUndoManager 中创建一个操作:
[[[NSManagedObjectContext MR_defaultContext] undoManager] beginUndoGrouping];
[[[NSManagedObjectContext MR_defaultContext] undoManager] setActionName:@"Create Room"];
然后是undo,当用户按下取消。这会导致撤消所有更改并删除新创建的临时 Room 对象。
然后用户将Pictures 用于这个临时的Room 对象。我将实际图像存储在磁盘上,并将filePath 作为NSString 属性存储在Picture 实体中。当用户手动删除房间中的图片时,我使用Picture 上的prepareForDeletion: 方法从磁盘中删除图片。
问题
现在想象一下用户稍后打开Room 实体,删除Picture 然后按取消 的情况。 NSUndoManager 现在撤消所有操作。当用户删除图片时,实际图像从磁盘中删除。 但是,Picture 对象由 NSUndoManager 恢复,filePath 现在设置为物理删除的图像。
有没有办法知道图片何时真正被删除(即在 prepareForDeletion 中:)?我的意思是,它被用户删除了,并且没有被撤消操作带回来?
我真的不应该每 x 天从我的应用文档中删除任何内容并清理未链接的照片吗?或者我应该跟踪用户删除了哪个Pictures,并在用户按save 而不是cancel 时将它们排队等待删除?
【问题讨论】:
标签: ios core-data nsundomanager