Ios CoreData-在子上下文中管理文件引用
我的CoreData模型有一个具有图像属性的实体。 我始终通过将这些实体的图像存储在文件系统中并在CoreData属性(即路径)中维护对文件的引用来管理这些实体的图像 然而,我最近转向使用子托管上下文来处理编辑(这样,如果用户选择取消编辑,我可以轻松放弃更改)。 这一切都很好,但是我现在有一个跟踪任何图像更改的问题,特别是如果用户更改图像,我不能再删除旧文件(不希望文件系统中出现孤立文件)并替换为新文件,因为如果用户取消更改,旧文件现在将丢失 在我看来,我有两个选择:Ios CoreData-在子上下文中管理文件引用,ios,swift,core-data,magicalrecord,Ios,Swift,Core Data,Magicalrecord,我的CoreData模型有一个具有图像属性的实体。 我始终通过将这些实体的图像存储在文件系统中并在CoreData属性(即路径)中维护对文件的引用来管理这些实体的图像 然而,我最近转向使用子托管上下文来处理编辑(这样,如果用户选择取消编辑,我可以轻松放弃更改)。 这一切都很好,但是我现在有一个跟踪任何图像更改的问题,特别是如果用户更改图像,我不能再删除旧文件(不希望文件系统中出现孤立文件)并替换为新文件,因为如果用户取消更改,旧文件现在将丢失 在我看来,我有两个选择: 我跟踪业务层中的图像更改,
谢谢 第一种方法会更好。如果保存是可丢弃的,那么这样做是有意义的。除非图像通常很小,否则最好将其保存在外部 删除旧图像的好地方可能是托管对象的
willSave()
方法。查看changedvalue
以查找旧图像名称。如果与当前值不同,请删除旧值
为了处理回滚更改,我想到了两种可能性
- 通过查看即将回滚的新实例并删除其映像文件,在任何代码回滚更改时都可以处理此问题
- 保存更改时,请始终将新图像放入
中,并使用NSTemporaryDirectory()
将其移动到永久位置。然后,您不需要在回滚时执行任何操作——您可以让iOS为您处理清除临时目录的操作willSave()