2016-11-04 159 views
-1

我必须在我的swift应用程序中播放一些视频。视频工作正常,但我想检测视频何时结束。我搜索了一下,然后我发现NotificationCenter是解决方案。我使用了这段代码,但是我的应用程序在视频结束时崩溃了。Swift:检测视频结束

这是我的代码:

func playVideo(url: NSURL){ 
let player = AVPlayer(url: url as URL) 

     NotificationCenter.default.addObserver(self, selector: Selector(("playerDidFinishPlaying")), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem) 
player.play() 
} 

func playerDidFinishPlaying(note: NSNotification) { 
     print("Video Finished") 
    } 

的错误是:

[myApp.myViewController playerDidFinishPlaying]: unrecognized selector sent to instance 0x79669740 

任何帮助吗?

+0

你能给我更多的细节吗? –

+0

代码如'url:NSURL'和'func playerDidFinishPlaying(注意:'是Swift 2.你需要在Swift 3中编写你的代码。现在你有一种Swift 2和Swift 3的混合。 – matt

回答

1

因为你的选择器是错误的,显然。您的意思是:

Selector(("playerDidFinishPlaying")) 

但这不是您的方法的Objective-C名称。

很明显,你不知道如何制作你的方法的Objective-C名字。而且你不必!这正是#selector语法解决的问题。只需使用它:

#selector(playerDidFinishPlaying) 

现在它会工作,因为斯威夫特将解决你不知道如何解决的问题。

+0

我已经回答你真的问过这个问题,我相信我的回答是正确的,我的工作已经完成了, – matt

+0

谢谢你的工作,我相信我必须更加关注swift的版本和语法,再次感谢你,你是最棒的! –

+1

如果您想了解'#selector'语法为您做了什么,请阅读我的书:http://www.apeth.com/swiftBook/ch02.html#_selectors – matt