我正在寻找一种方法来了解何时从数据存储中真正删除了核心数据实体。
我把一个NSUndoManager
连接到我的NSManagedObjectContext
上,到目前为止一切都很好。
现状
我正在开发一个应用程序,允许用户创建Room
并在每个房间添加一些图片。当用户想要创建一个新房间时,我在NSUndoManager中创建一个操作,代码如下:
[[[NSManagedObjectContext MR_defaultContext] undoManager] beginUndoGrouping];
[[[NSManagedObjectContext MR_defaultContext] undoManager] setActionName:@"Create Room"];
然后当用户按下取消时CCD_ 4。这将撤消所有更改,并删除新创建的临时Room
对象。
然后,用户为该临时Room
对象获取Picture
s。我将实际图像存储在磁盘上,并将filePath
作为NSString
属性存储在Picture
实体中。当用户手动删除房间中的图片时,我在Picture
上使用prepareForDeletion:
方法从磁盘中删除图像。
问题
现在想象这样一种情况:用户稍后打开Room
实体,删除Picture
,然后按取消。NSUndoManager
现在撤消所有操作。当用户删除图片时,实际图像被从磁盘删除但是,Picture
对象由NSUndoManager恢复,filePath
现在设置为已被物理删除的图像。
有没有办法知道图片何时被真正删除(即准备删除:)?我的意思是,它是由用户删除的,而不是由撤消操作带回的?
我真的不应该每x天从我的应用程序文档中删除任何内容并清理未链接的照片吗?或者,当用户按下保存而不是取消时,我应该跟踪用户删除的Picture
,并将其排队删除吗?
"解决"了这个问题,只需通过任何用户操作从不从磁盘中删除,并在每次应用程序启动时运行清理方法。