xCode:从应用程序文档目录中检索图像

Posted

技术标签:

【中文标题】xCode:从应用程序文档目录中检索图像【英文标题】:xCode: Retrieving images from apps documents directory 【发布时间】:2014-11-22 18:16:41 【问题描述】:

我遇到了一个我找不到解决方案的问题。我已经广泛搜索了论坛,但找不到任何东西。希望有人能解释一下。

我有一个可以保存图像的应用程序。它们保存到应用程序文档目录中,并且它们的路径保存在 sqlite 数据库中。每次我运行/构建应用程序时,它都无法再检索文档目录中已经存在的图像。在同一个构建阶段,我可以重新保存图像,然后我可以很好地检索它们,但是一旦我再次运行/构建应用程序,它就无法检索图像。图片没有被删除,路径仍然正确。

这就是我尝试在 ViewDidLoad 方法中检索它们的方式

//database was opened. Getting path to image
NSString *logoPath = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 21)];
//use path to load image to a UIImage view
[self.logoView setImage:[UIImage imageWithContentsOfFile:logoPath]];

我已经确认图像仍在文档目录中,并且在上面的第一行代码中正确分配了路径。此代码仅在我运行/构建应用程序时失败。一旦应用程序运行,我可以将图像保存到目录并使用相同的代码检索它们就好了,但是一旦我再次运行/构建应用程序,即使我可以,我在以前的构建中保存的图像也无法提取仍然可以在目录中看到它们(我使用 iExplorer 查看我的 iPhone 目录)。

有什么想法吗?我想也许我必须以某种方式启动目录中的这些图像,以便在构建后立即使用它们。

更新 - 更多信息以防万一。在我的 iPhone 上构建应用程序后,我可以关闭应用程序并重新打开它,图像就可以正常工作了。我什至可以完全关闭应用程序(双击主页按钮并结束应用程序进程),当我重新启动应用程序时,从目录中检索图像就好了。但是一旦我通过 xCode 再次构建应用程序,我就无法访问图像。当一个新的构建完成时,一些事情正在发生变化。

更新 2 - 我想我发现了问题,并且它在路径中。 这是我的路

/var/mobile/Containers/Data/Application/8A387845-7B1F-4228-9E7E-2498EC302C5A/Documents/RYal7UXrLvcompanyLogo.png

在我再次构建应用程序后,这是我再次保存图像时的新路径

/var/mobile/Containers/Data/Application/C0C30E2F-05D8-48F4-A0FF-603359AF5130/Documents/RYal7UXrLvcompanyLogo.png

看起来应用程序和文档之间的部分在每次构建后都会发生变化,因此我保存在我的 sqlite 数据库中的路径在新构建后不再有效。所以现在我需要弄清楚中间部分是什么在不断变化,以及如何在每次构建后获取它,以便我可以更新我的图像路径。

【问题讨论】:

你所描述的应该是有效的。重新开始后访问现有文件没有什么特别需要做的。您确定 logoPath 是您对旧图像的期望吗?您看到的失败的性质是什么? 谢谢本。我将更深入地研究 logoPath,看看我是否遗漏了什么。失败的本质是构建应用程序时我的徽标(图像)没有加载到我的 UIImageView 中。请参阅我在上面的问题中添加的更新。 感谢 Ben,尽管我确信它们是正确的,但你让我再次审视自己的道路。请参阅我的问题中的更新 2。 不断变化的 UUID 本质上是一个“安装 ID”,除非您实际从设备上删除应用程序,然后使用 Xcode 重新启动,否则不应更改。有这样的事情发生吗?假设不是,您是否有可能从以前的测试安装中获得该 sqlite 表中的陈旧数据? (还建议验证 UIImage -imageWithContentsOfFile 是否返回 nil - 可能是,但您要确保已将其完全缩小为路径问题。) 【参考方案1】:

问题是路径。每次创建新版本时,文档目录的部分路径都会更改。请参阅上面原始问题中的更新 2。

【讨论】:

以上是关于xCode:从应用程序文档目录中检索图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 5 产品首选项编辑器的资产目录中访问图像(用于文档图标)

Swift 无法从 parse.com 检索图像

如何从 iPhone 中的目录中检索图像?

将相机捕获的图像保存到ios中的文档目录中[重复]

UIImagePickerController - 从应用程序文档目录保存和检索照片

Xcode:根据预处理器标志从资产目录中排除构建中的图像