所以我正在创建一个在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做错了。任何帮助将不胜感激。
答案 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)")
}