在文件系统与核心数据中存储图像
我目前正在开发一个iOS应用程序,允许用户将图片从照片库添加到应用程序中。我将这些图像存储在设备文件系统中,并在需要它们时访问它们(当它们在UIScrollView中时,我可以经常访问它们)在文件系统与核心数据中存储图像
我只是想获得关于此方法的一些意见。我应该继续使用文件系统方法,还是将这些I图像存储在CoreData中会有所裨益。
任何建议,将不胜感激。
谢谢。
我不认为核心数据真的是专为存储这种类型的数据而设计的。这样做的道德上等同于将图像数据存储到SQL /关系数据库中,这也是不理想的。
我有一个类似的情况,我有一堆存储在硬目标位置的图像(我的图像列表从不改变,所以我只是将它们全部包含在应用程序包中)与包含大量元数据的Core Data存储关于图像。所有我保持图像本身的核心数据是文件名,然后一起捣烂运行期间,完整的文件路径,当它终于时候,看到的图像。我没有任何延迟或延误的问题。
尽管我没有在UIScrollView中显示图像,但我仍然认为从Core数据存储中获取图像信息数组时很少出现问题,并在生成单元格时生成完整的文件路径因为那些只是字符串,并且生成UIImage的代码非常紧凑。也就是说或生成的信息在相同的阵列,然后编译图像路径的阵列的任何细胞之前被生成,像当的UIScrollView正要出现。
我认为把它们放入核心数据会很慢。文件系统将会更快。
对于比缩略图更大的东西,您应该使用文件系统方法。
首先,如果你存储在核心数据中,你必须存储它有数据或可变形的属性。无论哪种情况,您都有一个额外的步骤来转换为图像。如果你存储一个文件,你可以直接使用UIImage加载它。
但是,主要的问题是内存使用,一个错误的图像不会像UIImage一样从内存中清除。
更新2012-9-20:此答案现在已过时。核心数据没有自己的系统来存储大块数据,如外部文件中的图像。
如何理解“断陷图像也不会被从内存中清除像一个会UIImage的。”? – 2012-07-17 05:35:26
而我的缩略图大约在20〜40kb之间,但缩略图的数量可能会有数千个,这取决于用户。我应该将照片保存到文件吗? PS。所有的照片将被上传到服务器。 – 2012-07-17 05:38:48
我已经阅读了同样的事情,我只是想衡量人们对这样的经历。在大多数情况下,我觉得它非常快,直到我添加一些图片,那么它会减慢,而我必须重新启动应用程序,让我速回。我认为这是一个记忆问题,但我没有看到任何泄漏(即使在乐器中),所以我将不得不深入挖掘。感谢您的答复。我会保持这种开放一点,如果我不从的,而其他人听到,我将标志着这个作为答案。 – jabroni 2011-03-13 22:38:40