2016-11-04 201 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