6

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

我的案例的最佳做法是什么?

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

4

1 回答 1

7

您可以prepareForDeletionPhoto managed object 子类中覆盖并删除那里的照片文件:

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

然后删除Photo对象会自动删除相应的文件,如果对象由于某些级联删除规则而被删除,它也可以工作。

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

于 2013-07-21T06:21:19.320 回答