我正在寻找一种方法来了解核心数据实体何时真正从数据存储中删除。
我将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
并将其排队删除?
答案 0 :(得分:0)
通过任何用户操作永远不会从磁盘中删除,以及每次应用启动时运行清理方法,“解决”此问题。