我拥有的是一个名为“MyDocument”的核心数据实体,它具有这些属性
- 文件名
- 文件扩展名
- 文件网址
我从服务器下载了一堆文件,将它们保存在磁盘上的“缓存”文件夹中,然后在数据库中为每个文档插入行。这只是使管理应用程序中的文档变得更容易,而无需列出目录内容等......
一切似乎都很好,除了当我删除实体时,我还想删除磁盘上的关联文件。我可以轻松地做这样的事情
for(MyDocument *myDocument in ParentEntity.mydocuments)
{
[[NSFileManager defaultManager] removeItemAtURL:[NSURL fileURLWithPath:myDocument.fileURL] error:nil];
[context deleteObject:myDocument];
}
但是我正在尝试通过访问器完成此操作....以便我可以deleteObject:myDocument
从任何地方调用 - 并确保相关文件也将被删除。
我知道我可以使用 Core Data 的 External File Storage 选项而不用担心这个,但我使用 QLPreviewController 来预览这些文档,并且 QLPreviewController 需要一个文件 URL 才能预览该项目。如果我将文档保存在 Core Data 中,每次 Preview 需要它时,我都必须将文件从存储的 NSData 写入磁盘。这没有任何意义,所以我决定自己将它们存储在外部并在数据库中保留参考。
那么,我将如何编写一个自定义访问器,该访问器将在对象即将被删除之前跳转并删除关联的文件,然后继续删除实际的实体..
提前致谢