我有一个相册照片核心数据模型。照片实体有一列用于保存在磁盘上的实际照片文件的路径。删除照片和相册的最佳做法是什么?在删除核心日期中的项目之前,我是否必须手动删除磁盘上的文件?照片对象很容易。但是对于相册,照片本来可以被级联删除规则删除的,现在需要一个一个循环处理文件。
我的案例的最佳做法是什么?
(我决定不使用“允许外部存储”来解决其他问题)
我有一个相册照片核心数据模型。照片实体有一列用于保存在磁盘上的实际照片文件的路径。删除照片和相册的最佳做法是什么?在删除核心日期中的项目之前,我是否必须手动删除磁盘上的文件?照片对象很容易。但是对于相册,照片本来可以被级联删除规则删除的,现在需要一个一个循环处理文件。
我的案例的最佳做法是什么?
(我决定不使用“允许外部存储”来解决其他问题)
您可以prepareForDeletion
在Photo managed object 子类中覆盖并删除那里的照片文件:
- (void)prepareForDeletion
{
[super prepareForDeletion];
[[NSFileManager defaultManager] removeItemAtPath:self.path error:nil];
}
然后删除Photo对象会自动删除相应的文件,如果对象由于某些级联删除规则而被删除,它也可以工作。
更新:正如 Xiaochao Yang 所注意到的,覆盖didSave
可能是更好的解决方案,特别是如果您使用托管对象上下文的撤消功能。比较“删除核心数据对象时如何处理外部数据清理”的各种答案。