我使用PHCachingImageManager().requestAVAsset
加載從相機膠捲一些視頻:崩潰
override func viewDidLoad() {
super.viewDidLoad()
print("SEGUE SUCCESSFUL")
view.backgroundColor = .black
avPlayerLayer = AVPlayerLayer(player: avPlayer)
view.layer.insertSublayer(avPlayerLayer, at: 0)
var asset2:AVAsset? = nil
PHCachingImageManager().requestAVAsset(forVideo: (vidLocation?[videoSender]!)!, options: nil, resultHandler: {(asset: AVAsset?, audioMix: AVAudioMix?, info: [AnyHashable : Any]?) in
asset2 = asset! as AVAsset
})
let playerItem = AVPlayerItem(asset: asset2!)
avPlayer.replaceCurrentItem(with: playerItem)
}
然而,當我運行它會暫停在PHCachingImageManager().requestAVAsset
線和顯示程序:
THREAD 1:EXC_BREAKPOINT
(以綠色突出顯示)
我不確定發生了什麼,也找不到我在文檔中理解的任何內容。我該如何解決?
您在該調用的一個參數('(vidLocation?[videoSender]!)!')中有兩個強制展開操作。可能至少有一個是零。另外,雖然它與你的崩潰無關,但你有一個不正確的假設 - requestAVAsset的完成處理程序是異步的,所以它會在設置你的'playerItem'的代碼之後執行*,所以'asset2'將始終爲零你嘗試使用它的時間。 – rickster