文件存在于主线程上但后台线程表示它没有(iOS)

时间:2017-08-26 13:58:06

标签: ios swift avmutablecomposition

我正在将AVMutableComposition视频导出到临时位置,然后成功将其传输到相机胶卷。导出后,如果存储为let videoPath的返回的相机胶卷URL存在,则检查主线程

if FileManager.default.fileExists(atPath: videoPath) {
   print("FILE AVAILABLE")
} else {
   print("FILE NOT AVAILABLE")
}

确实如此。所以我把它放在一个AVPlayer中,它一切都很好。那么我想将它上传到我的网络服务器,所以我在后台线程中投射与Data对象的内容相同的URL,然后在运行之前我运行相同的{{1}这次控制台说FileManager.default.fileExists显然使FILE NOT AVAILABLE尝试构造函数失败

在调用后台线程函数之前,我甚至检查主线程文件是否存在且它确实但是在后台它显示它不。< / p>

现在最奇怪的部分是什么,为什么我来到SO是因为在这个初始文件检查失败后,我移动到另一个视图,它可以运行相同的后台功能,并在第二次(第一次失败后的所有后续时间) )控制台显示Data并执行其操作。

这里发生了什么?

1 个答案:

答案 0 :(得分:0)

好的,如果有其他人有这个问题,我通过以下方式解决了这个问题:

我没有检查videoPath并在后台线程中创建Data对象(并冒着因为我之外的原因而无法检测到它的风险),而是创建了{{1}导出主线程上的对象,只需将创建的Data对象传递给函数进行上传。简单而且照顾好了问题!

有时最好的解决方案不是弄清楚系统,而是要击败它。