「URLから動画の取得が終了したら」という条件つきで実行したい処理があります。
(動画の取得中には実行したくない)

このような処理を実装する場合に、どのような方法が考えられますか。
以下のように非同期処理で実現しようとしたところ、クラッシュしました。

DispatchQueue.global().sync {

   let url = URL(string: "http://movie.mov")
   let player = AVPlayer(url: url!)
   let playerViewController = AVPlayerViewController()
   playerViewController.player = player
   let playerLayer = AVPlayerLayer(player: videoPlayer)
   self.view.layer.addSublayer(playerLayer)
   player.play()

   DispatchQueue.main.sync {
   //ここで処理を実行したい
   }
}