在 AVAudioPlayer / Swift 中为音频文件设置一个变量

Set a variable for the audiofile in AVAudioPlayer / Swift

我有一个 AVAudioPlayer,我想用变量 « circuit » 播放一首歌曲。变量将有一首歌曲的名称,保存在应用程序的根目录中。

class MonumentViewController: UIViewController {

    var circuit:String!

var BackgroundAudio = AVAudioPlayer(contentsOfURL:NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("dguetta", ofType: "mp3")!), error: nil)

我尝试了下面的这段代码,但收到以下错误消息:'MonumentViewController.Type'does not have a member named 'circuit'

var BackgroundAudio = AVAudioPlayer(contentsOfURL:NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(circuit, ofType: "mp3")!), error: nil)

任何帮助将不胜感激

编辑:

我已经处理过一个 struct ()

 struct MyVariables {


        static var pisteaudio = "dguetta"
        static var BackgroundAudio = AVAudioPlayer(contentsOfURL:NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(pisteaudio, ofType: "mp3")!), error: nil)
    }

然后我为变量添加 "MyVariables."。

您不能以这种方式初始化依赖于另一个 属性 的实例 属性,尤其是当 self 尚未创建时。

你的 BackgroundAudio 依赖于 circuit 变量,你用它创建了一个 AVAudioPlayer 的实例,它本身还没有初始化。

相反,这里是一个示例,说明如何创建 AVAudioPlayer 然后将其设置为播放您的声音文件:

class MonumentViewController: UIViewController 
{
    var circuit : String!
    var BackgroundAudio = AVAudioPlayer()

    override func viewDidLoad()
    {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        prepareAudioPlayer()
    }

    func prepareAudioPlayer()
    {
        circuit = "chopin-tristesse-in-e-major"
        //it is of good practice to always make use of error, instead of passing nil to the parameter
        var error : NSError?

        if let BackgroundAudio = AVAudioPlayer(contentsOfURL:NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(circuit, ofType: "mp3")!), error:&error)
        {
            if(error != nil)
            {
                print("Error has occurred")
            }
            else
            {
                BackgroundAudio.prepareToPlay()
                BackgroundAudio.play()
            }
        }
    }
}

作为旁注,请以小写字母命名您的变量并应用驼峰式大小写约定:

var thisIsMyString : String! 

var backgroundAudioPlayer = AVAudioPlayer()

希望对您有所帮助。