删除将文件和实际文件存储为路径的核心数据项的最佳做法是保存在磁盘上?

Xia*_*ang 6 core-data objective-c ios

我有一张专辑照片核心数据模型.照片实体有一列用于保存在磁盘上的实际照片文件的路径.删除照片和相册的最佳做法是什么?在核心日期删除项目之前,是否必须手动删除磁盘上的文件?照片对象很容易.但是对于一张专辑,这些照片可能已被级联删除规则删除,现在需要逐个循环处理这些文件.

对我来说,最好的做法是什么?

(我决定不使用"允许外部存储"来解决其他问题)

Mar*_*n R 7

您可以prepareForDeletionPhoto托管对象子类中覆盖并删除那里的照片文件:

- (void)prepareForDeletion
{
    [super prepareForDeletion];
    [[NSFileManager defaultManager] removeItemAtPath:self.path error:nil];
}
Run Code Online (Sandbox Code Playgroud)

然后删除Photo对象会自动删除相应的文件,如果由于某些级联删除规则删除了该对象,它也会起作用.

更新:正如Xiaochao Yang所注意到的,覆盖didSave可能是更好的解决方案,特别是如果您使用托管对象上下文的撤消功能.比较" 删除Core Data对象时如何处理外部数据清理 "的各种答案.