核心数据和大文件下载

问题描述:

我正在将一些PDF存储到类型为NSDataNSManagedObject属性中。我已经为该属性设置了“使用外部存储”,并且它工作得很好。我遇到的问题是,当PDF非常大时,应用程序崩溃,因为它的内存不足。有没有办法将数据块直接保存到磁盘?我已经使用refreshObject:mergeChanges:,但即便如此,我仍然需要将数据保存到内存中,直到完全下载完成(然后我可以拨打refreshObject:mergeChanges:)来排除属性并释放我的内存。当然,对于大型文档,这是迟到的,它在我有机会这样做之前崩溃了。核心数据和大文件下载

我想如果我在你的位置,我会获得NSInputStream这是传入的PDF文件,并使用NSOutputStream直接写入磁盘。

至于核心数据,我不认为这是适当的使用,你不打算到内存中完全故障文件; Apple没有给我们一个选择,通过核心数据将文件保存到磁盘中(我知道这一点)。在这种情况下,我只需将文件的位置保存在核心数据中,并在该文件路径发生故障后,从保存的路径创建一个NSInputStream

它是抽象低一点比大多数开发人员更喜欢可以,但最好是在任何有内存崩溃造成了潜在的控制。

+0

为什么我得到了downvoted?如果我错了,请有人纠正我。 – 2012-04-20 11:36:17