I PHCachingImageManager().requestAVAsset
bin mit ein paar Videos von der Kamera Rolle zu laden.Absturz bei der Verwendung von 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)
}
Allerdings, wenn ich das Programm ausführen es an der PHCachingImageManager().requestAVAsset
Linie pausiert und zeigt:
THREAD 1: EXC_BREAKPOINT
(grün markiert)
Ich bin mir nicht sicher, was passiert und kann nichts finden, was ich in der Dokumentation verstehe. Wie behebe ich das?
Sie haben zwei Force-Unwrap-Operationen in einem der Parameter für diesen Aufruf ('(vidLocation? [VideoSender]!)!"). Wahrscheinlich ist mindestens einer von ihnen gleich Null. Auch wenn es nichts mit Ihrem Absturz zu tun hat, haben Sie eine falsche Annahme - der Completion-Handler für 'requestAVAsset' ist asynchron und führt * nach * dem Code aus, der Ihr' playerItem' festlegt, so dass 'asset2' immer Null ist die Zeit, die Sie versuchen, es zu verwenden. – rickster