UIImagePicker自动将照片库中的选定图像保存在tmp文件夹中

时间:2017-10-16 09:08:19

标签: ios uiimagepickercontroller temporary-files photolibrary

我已经建立了一个应用安全问卷的应用程序。该应用程序允许将照片添加到个别问题。我为此使用了UIImagePickerController。从iOS 11开始我注意到,无论是在模拟器还是iPad中,从照片库中选择图像都会自动将所选图像保存在应用程序的tmp文件夹中,并带有“临时”名称(例如57576A97-21D4-465F- 91B6-11215F8B5F97.jpeg)。甚至在didFinishPickingMediaWithIn执行之前就会发生这种情况。

这是我设置UIImagePickerController

的代码
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = .photoLibrary;
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)

在使用应用期间不会删除此图片。如果用户添加了大量照片,这意味着所有这些照片都将存储在tmp目录中,最终可能会导致崩溃。

目前我做了一个工作,搜索'temp'文件并每次删除它们。

我已经使用iOS 10.1模拟器进行了检查,但是没有在temp目录中创建所选图像的副本(使用相同的代码)。在iPad上进行测试时,使用相机不会导致所选图像的“临时”副本

我的问题是:是按照iOS 11中的UIImagePicker标准行为保存临时文件,还是可以避免?

1 个答案:

答案 0 :(得分:0)

我以前也遇到过同样的问题...我认为没有办法避免保存图像。我之前遇到过这个问题,我们还管理了自己的图像删除,而这是在iOS 11之前的。

您可以使用图像选择器中的PHAsset导致从照片库访问图像,从而使图像不保存在临时位置吗?

更新

在我的个人项目中,我也遇到了这个问题,并且找到了一个简单的解决方案。我将图像从应用程序文档目录中的temp目录中移出,进行一些编辑,然后将其发送到服务器。使用moveItem(at srcURL: URL, to dstURL: URL) throws文件功能意味着文件不会重复,我只需要在我的文档目录中管理文件的持久性,而无需在temp目录中进行管理。