Ich erstelle einen Sample Player für ein Testprojekt. Ich habe eine NSNotification erstellt, um eine Funktion zum Abspielen der nächsten Audiospur innerhalb eines Arrays aufzurufen. Das Problem ist, dass die Benachrichtigung diese Funktion etwa 8 Mal hintereinander aufruft? Ich habe keine Ahnung, warum das passiert. Hier ist mein Code und danke für die Hilfe!NSNotification wird mehr als einmal ausgelöst?
let player = AVPlayer()
var urlPlayerItems = [String]()
var currentTrack: Int = 0
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Checks to see if player reached end
NotificationCenter.default.addObserver(self,
selector: #selector(PlayerViewController.autoplayNextTrack(notification:)),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
object: player.currentItem)
}
func playTrack() {
if urlPlayerItems.count > 0 {
let newMovieURL = URL(string: urlPlayerItems[currentTrack])!
asset = AVURLAsset(url: newMovieURL, options: nil)
player.play()
}
}
func autoplayNextTrack(notefication: NSNotification) {
if (currentTrack + 1) >= urlPlayerItems.count {
currentTrack = 0
} else {
currentTrack += 1
}
playTrack()
}
versuchen bewegen addObserver zu viewDidLoad Aufruf oder entfernen in viewWillDisappear –
Ich habe das versucht und funktioniert immer noch nicht. Es wird immer noch mehrmals aufgerufen, wenn ich den Code von AutoplayNextTrack entfernen und nur eine Print-Anweisung gibt es einmal aufruft? – user7097242
Auch wenn ich playTrack() -Clan in AutoplayNextTrack kommentiert es nicht mehr als einmal – user7097242