J'utilise PHCachingImageManager().requestAVAsset
pour charger des vidéos à partir du rouleau de la caméra.crash lors de l'utilisation 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)
}
Cependant quand je lance le programme, il fait une pause sur la ligne PHCachingImageManager().requestAVAsset
et montre:
THREAD 1: EXC_BREAKPOINT
(en vert)
Je ne suis pas sûr de ce qui se passe et je ne trouve rien de ce que je comprends dans la documentation. Comment puis-je réparer ça?
Vous avez deux opérations de dépliage forcé dans l'un des paramètres de cet appel ('(vidLocation? [VideoSender]!)!'). Probablement au moins l'un d'entre eux est nul. De plus, bien que cela ne soit pas lié à votre crash, vous avez une fausse supposition - le gestionnaire d'achèvement de 'requestAVAsset' est asynchrone, donc il exécutera * après * le code qui définit votre' playerItem', donc 'asset2' sera toujours nul à le moment où vous essayez de l'utiliser. – rickster