加载视图时如何加载MPMoviePlayerController的contentUrlasynchronous?

我尝试使用MPMoviePlayerController播放video。 设置是:我推新视图控制器,然后在viewDidLoad中设置视图和电影播放器​​实例,然后使用NSURLSession.sharedSession()。dataTaskWithURL()在我加载电影的REST资源给我的URL。 在完成块中,我将电影播放器​​实例的contentUrl设置为这个URL并且说播放。 但是,电影帧保持黑色。 如果我在viewDidLoad,viewWillAppear或viewDidAppear中将contentUrl硬编码到url,电影显示就好了。 errorLog和accessLog都是零。 所以我认为asynchronousURL加载和电影contentUrl的分配是有问题的。

安装:Swift,Xcode 6testing版,iOS 8。

在一些代码片段下面:

class PresentationsViewController { override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { let presentationViewController = PresentationViewController(presentations[indexPath.row]) navigationController.pushViewController(presentationViewController, animated: true) } } class PresentationViewController { var presentation: Presentation? var moviePlayer: MPMoviePlayerController? convenience init(_ presentation: Presentation) { self.init() self.presentation = presentation } override func viewDidLoad() { super.viewDidLoad() moviePlayer = MPMoviePlayerController() moviePlayer!.view.frame = CGRect(x: X, y: Y, width: W, height: H) moviePlayer!.movieSourceType = MPMovieSourceType.Unknown moviePlayer!.controlStyle = MPMovieControlStyle.Embedded NSURLSession.sharedSession().dataTaskWithURL(presentation.url) { data, response, error in // Some JSON parsing etc. self.moviePlayer!.contentURL = presentation.videoUrl self.moviePlayer!.prepareToPlay() self.moviePlayer!.play() }.resume() view.addSubview(moviePlayer.view) } } 

我不确定这是否是Swifttesting版或iOS 8testing版中的错误,但更改代码以使用AVPlayer工作。

 import AVFoundation import AVKit let playerViewController = AVPlayerViewController() // In async block: if let player = AVPlayer.playerWithURL(url) as? AVPlayer { playerViewController.player = player }