因此,我正在创建一个iPhone应用程序,该应用程序可以在Swift中下载声音文件,但我有一个问题。使用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做错了。任何帮助,将不胜感激。
最佳答案
怎么样:
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)")
}