Невозможно назначить значение типа AVAudioPlayer Swift - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь вызвать функцию, когда песня заканчивает играть.Вот мой класс аудиоплеера:

import AVFoundation

public class SKTAudio {
    public var backgroundMusicPlayer: AVAudioPlayer?

    public func playBackgroundMusic(filename: String) {
        let url = Bundle.main.url(forResource: filename, withExtension: nil)
        if (url == nil) {
            print("Could not find file: \(filename)")
            return
        }

        var error: NSError? = nil
        do {
            backgroundMusicPlayer = try AVAudioPlayer(contentsOf: url!)

        } catch let error1 as NSError {
            error = error1
            backgroundMusicPlayer = nil
        }
        if let player = backgroundMusicPlayer {
            player.delegate = self
            player.prepareToPlay()
            player.play()
        } else {
            print("Could not create audio player: \(error!)")
        }
    }

    func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, 
        // Do stuff
    }
}

Однако код не скомпилируется, и строка player.delegate = self возвращает эту ошибку:

Невозможно присвоить значение типа 'SKTAudio «напечатать» AVAudioPlayerDelegate? '

И дает возможность:

Вставить' как!AVAudioPlayerDelegate '

Компилируется, но при запуске вылетает и возвращает в консоли следующее:

Не удалось привести значение типа' Scene.SKTAudio '(0x102ebf7b0)to 'AVAudioPlayerDelegate'

Где playBackgroundMusic() вызывается в сцене.Я не имею ни малейшего понятия, что делать в этот момент, я пытался следить за различными другими сообщениями, но, похоже, никто не сталкивался с проблемой со строкой player.delegate = self.Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...