更新包含图像的iOS应用程序内容

时间:2012-10-15 20:22:17

标签: ios

我正在从事蔬菜园艺应用。除了蔬菜名称和描述,我也有蔬菜图像。目前,我在Xcode项目的Supported Files文件夹中有所有图像。

但稍后我想动态更新应用程序而无需用户下载新版本。当用户更新应用程序或从服务器下载数据将包括图像的新数据时。我可以将这些图像存储在支持文件夹中,也可以只通过名称将它们存储在可以引用的位置。

相关问题:

我还将允许用户拍摄他们的蔬菜照片,然后写下关于蔬菜的说明,如“刚种植”,“即将收获”等。存储图片/照片的推荐方法是什么。我总是可以将它们存储在用户的照片库中,然后将引用存储在本地数据库中,然后使用引用获取并显示图片。这种方法的问题可能是,如果用户意外删除了库中的图片,那么它将不再显示在我的应用程序中。

我看到的唯一方法是将图片作为BLOB存储在app本地数据库中。

1 个答案:

答案 0 :(得分:3)

不能将下载的图像与其他图像放在支持文件夹中。另外我建议你把图像放在Images或Resources文件夹中......如果你想在编译应用程序后下载任何数据,那么它们就不会在捆绑中。在谈论Xcode中的Supported Files文件夹时,它是您所指的包。这只适用于您的应用程序。

为了清楚起见,一旦编译,你的应用程序没有文件夹结构,这些“文件夹”只是Xcode项目中的组,以保持整洁。

如果下载说包含一组图像的zip文件,则可以在下载后将它们写入磁盘。您应该将这些图像放在tmp,缓存或文档目录中。

但是,在加载图像之前,您必须构建路径。您将无法仅提供文件的名称,例如:

[UIImage imageNamed:@"something.jpg"];

因为这会在你的包中看到。相反,您必须执行something like this才能从Documents目录中加载图像。

您面临的挑战是,您将最终处于Bundle中的某些图像(您上传应用程序时的图像)以及文档目录中的较新图像。您必须首先检查捆绑包,如果没有图像,请检查文档目录。


对于用户生成的数据,我建议还将图像保存在Documents目录中,并维护用户数据的SQLite数据库,这样就可以将图像名称映射到数据库中的条目。您不希望将图像保存为BLOB,因为这将不可避免地降低查询性能并在CPU上添加额外的不必要负载以转换为UIImage并返回。

您不希望将图像保存到图库中有两个原因,首先这意味着您将保存在2个位置,因为将数据库中的引用保留为外部图像非常脆弱而您只是要求对于麻烦,其次,一旦图像不在你的侧翼,你就不再控制它了,用户会在某个时候删除它,如果他们回到你的应用程序,他们希望在那里看到它。