NSUndoManager检测核心数据实体的实际删除

时间:2014-10-21 09:25:44

标签: ios core-data nsundomanager

我正在寻找一种方法来了解核心数据实体何时真正从数据存储中删除。

我将NSUndoManager连接到我的NSManagedObjectContext,到目前为止一切正常。

现状

我正在构建一个应用,允许用户创建Room并在每个房间添加一些图片。当用户想要创建一个新房间时,我使用以下代码在NSUndoManager中创建一个动作:

[[[NSManagedObjectContext MR_defaultContext] undoManager] beginUndoGrouping];
[[[NSManagedObjectContext MR_defaultContext] undoManager] setActionName:@"Create Room"];
当用户按取消时,

然后undo。这会导致所有更改都被撤消,并且新删除的临时Room对象将被删除。

然后,用户将Picture用于此临时Room对象。我将实际图像存储在磁盘上,将filePath存储为NSString实体中的Picture属性。当用户手动删除房间中的图片时,我会在prepareForDeletion:上的Picture方法中删除磁盘中的图片。

问题

现在假设用户稍后打开Room实体,删除Picture,然后按取消的情况。 NSUndoManager现在撤消所有操作。当用户删除图片时,实际图像从磁盘中删除,NSUndoManager会恢复Picture对象,现在filePath设置为物理删除的图像。

有没有办法知道图片真正删除的时间(即在prepareForDeletion :)?我的意思是,它已被用户删除而不是被撤消操作带回来了?

我是否真的不会删除任何内容并每隔x天从我的应用文档中清除未链接的照片?或者,如果用户按保存而不是取消,我应该跟踪用户删除了哪些Picture并将其排队删除?

1 个答案:

答案 0 :(得分:0)

通过任何用户操作永远不会从磁盘中删除,以及每次应用启动时运行清理方法,“解决”此问题。