如何在Swift app

时间:2015-04-22 22:11:26

标签: xcode swift audio ios-simulator avaudioplayer

所以我正在创建一个在Swift中下载声音文件的iPhone应用程序,我有一个问题。使用Xcode和iOS模拟器,我能够成功地将我需要的音频文件下载到模拟器上。我发现正在下载的文件位于我的OSx机器上的这个目录中:

OS X - >用户 - > “我的名字” - >图书馆 - >开发者 - > CoreSimulator - >设备 - > 96CDD ...... - >数据 - > 6B742 ... - >文件

现在我的问题是,我知道我在应用程序内部的设备上有音频文件,但我如何访问它们然后从应用程序本身播放它们?我正在尝试使用AVAudioPlayer,但我一直没有成功访问该文件。这是我正在尝试运行的代码,它位于viewDidLoad函数中:

    var playYoda = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Documents/do_or_do_not", ofType: "wav")!)
    println(playYoda)

    AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
    AVAudioSession.sharedInstance().setActive(true, error: nil)

    var error:NSError?
    audioPlayer = AVAudioPlayer(contentsOfURL: playYoda, error: &error)
    audioPlayer.prepareToPlay()
    audioPlayer.play()

我的所有代码都会编译,但是当我启动模拟器时,我收到此错误:致命错误:在第一行代码中解包一个可选值时意外发现nil链接(var playYoda = ...)。

我不知道这是因为我的路径是错误的音频文件,还是我的AVAudioPlayer做错了。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

如下:

let fileManager = NSFileManager.defaultManager()

let urls = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)

if let documentDirectoryURL: NSURL = urls.first as? NSURL {
    let playYoda = documentDirectoryURL.URLByAppendingPathComponent("do_or_do_not.wav")

    println("playYoda is \(playYoda)")
}