管理NSManagedObject中文档目录中的文件

时间:2013-10-04 16:08:18

标签: ios core-data

我的Image : NSManagedObject有两个属性:NSString* localPathNSString* remoteUrl

当我通过在托管对象上下文中调用save:&error来保存对象时,我希望它下载文件,当下载失败时,我希望保存操作也失败。

因为我有一个深度嵌套的数据库结构,对我的图像实体有多个引用,所以找到我的所有图像以手动触发下载会很复杂。

这是否可行,如果可以,如何取消保存或删除操作以使其失败? 如果在模型中执行此操作是不好的做法,我应该在哪里执行此操作?

3 个答案:

答案 0 :(得分:2)

这可能是你所描述的,但这将是一个非常糟糕的主意。下载图像可能需要很长时间。保存Core Data中的更改可能需要一段时间。由于保存会影响每个需要图像的实例,因此您需要进行一次可能很长时间的操作,并将其转换为一个荒谬,疯狂,过长的操作。在每次图像下载完成之前,保存都不会完成,这是一种非常不合理的依赖。

将图像下载和保存更改完全脱离相比,你会好得多。单独下载图像。如果对象的图像不可用,请使用某种占位符。

答案 1 :(得分:0)

不是让save:启动下载过程,而是通过保存整个托管对象上下文而不仅仅是单个对象,我将首先开始下载。如果下载成功,您可以将映像写入磁盘,更新localPath并保存更改,如果失败,则根本不需要进行保存。

答案 2 :(得分:0)

我认为您可能对MVCS(模型视图控制器服务/模型视图控制器存储)感兴趣。您可以将逻辑移动到Store层。如果下载成功完成,它将异步执行图像下载并创建NSManagedObject

您可以在MVCS - Model View Controller Servicehttps://softwareengineering.stackexchange.com/questions/184396/mvcs-model-view-controller-store

找到相关信息
相关问题