2017-08-26 28 views
0

我將AVMutableComposition視頻導出到臨時位置,然後成功將其傳輸到相機膠捲中。在出口,我的主線程上檢查是否存儲爲let videoPath返回的相機膠捲URL與存在:文件存在於主線程中,但後臺線程表示它不存在(iOS)

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

它。所以我把它放在AVPlayer,它玩的很好。於是我想將它上傳到我的Web服務器,所以我投的同一網址爲Data對象的內容在後臺線程我運行相同的FileManager.default.fileExists這個時候才這樣做的控制檯說FILE NOT AVAILABLE這顯然使得Data嘗試構造函數失敗

之前調用後臺線程功能,我甚至在主線程上檢查文件是否存在,並但隨後在後臺它說它不

現在什麼是最奇怪的部分,爲什麼我來到SO是因爲在這個初始文件檢查失敗後,我移動到另一個視圖,它可以運行相同的後臺功能,並在第二次(第一次後的所有後續時間失敗)控制檯顯示FILE AVAILABLE並做它的事情。

這是怎麼回事?

+0

Tripple check'videoPath'對於所有呼叫都是相同的。 – shallowThought

+0

@shallowThought我只是把url打印到控制檯,它們確實是一樣的 – simplexity

+0

線程考慮事項 - 可以安全地從多個線程調用共享FileManager對象的方法。但是,如果使用委託來接收有關移動,複製,刪除和鏈接操作狀態的通知,則應創建文件管理器對象的唯一實例,將委託指定給該對象,然後使用該文件管理器啓動你的操作。 –

回答

0

確定,如果任何人有這個問題,我解決它通過以下方式:

而不是檢查的videoPath和創造在後臺線程Data對象(以及冒着它不能夠檢測到它的超出了我的理由),我在主線程上創建了Data對象,並簡單地將創建的Data對象傳遞給上傳函數。簡單並照顧到問題!

有時最好的解決方案不是找出系統,而是要打敗它。

相關問題