选择正确的方法将图像写入iOS的文件夹

时间:2013-08-20 09:41:39

标签: iphone ios ipad

我想将图像写入我在运行时设置的文件夹。现在假设有100个图像,如果我将它保存在文档目录中的两个文件夹即folder1和folder2中。两者都有相同的没有。图像,即文件夹1中的50,文件夹2中的剩余50。接下来我想在任何我需要的地方取它们。

所以我的问题是,为半个图像选择两个文件夹或者为所有图像选择一个文件夹是否正确?哪个读写更快?如果单个文件夹中的图像数量增加,或者其中包含固定数量的图像的文件夹数量增加(例如5个文件夹,每个包含100个图像,1个包含500个图像),会发生什么?

我将在sqlite数据库的一个字段中保存这些路径。此外,我将查询此路径并显示图像,现在我想只为iOS设备执行此操作。感谢。

2 个答案:

答案 0 :(得分:1)

Vish,如果你已经在你的sqlite文件中存储了图像文件路径,那么你将存储多少文件并不重要 - 我认为NSFileManager不需要遍历所有文件。如果你需要检查文件,检查名称,然后打开图像,这将是一个不同的故事,你会遇到性能问题。所以在一个文件夹中做一切。如果您需要为用户保存不同类型的图像,我建议只有两个文件夹,例如,封面图像和个人资料图像,您可以为封面创建一个文件夹,为个人资料图像创建一个文件夹。

您可以使用Grand Central Dispatch的dispatch_async来保存图像,因此您不会阻止主线程和UI。你可以这样做:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    //save here the images
});

如果您想了解更多有关NSFileManager和性能提示的信息,请take a look here

答案 1 :(得分:0)

写入两个文件夹而不是一个文件夹不太可能有任何性能优势。无论如何,NSFileManager代码将处理所有这些。您还可以使用dispatch_async或NSOperationQueue将活动保留在后台,而不是阻止UI,这将为您提供更好的方法来管理性能。

如果您将路径存储在像sqlite这样的持久数据存储中,那么保持文件路径尽可能简单是有意义的,因此一个文件夹最好是最好的。