Я использую PHCachingImageManager().requestAVAsset
загрузить некоторые видео с камеры ролл:.Сбой при использовании 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
линии и показывает:
НИТИ 1: EXC_BREAKPOINT
(выделены зеленым цветом)
Я не уверен, что происходит и не могу найти что-либо, что я понимаю в документации. Как это исправить?
У вас есть две операции принудительного разворота в одном из параметров этого вызова ('(vidLocation? [VideoSender]!)!'). Вероятно, по крайней мере один из них равен нулю. Кроме того, хотя это не связано с вашим сбоем, у вас неверное предположение - обработчик завершения для 'requestAVAsset' является асинхронным, поэтому он будет выполнять * после * код, который устанавливает ваш' playerItem', поэтому 'asset2' всегда будет равен нулю время, когда вы пытаетесь его использовать. – rickster