Ios 如何播放我保存到用户手机上的音频文件

Ios 如何播放我保存到用户手机上的音频文件,ios,swift,avaudioplayer,Ios,Swift,Avaudioplayer,当我单击“保存”按钮时,会弹出一个警报,获取用户输入的文件保存名称。然后,当我点击播放按钮播放保存的文件时,它不会播放,我得到的是“没有文件”,所以我的问题是如何让它播放保存的文件 代码: 形成文件名的方式存在阻抗不匹配。在一个函数中,您使用的是URL。在另一个函数中,您使用的是路径字符串。他们没有得到同样的结果 如果您有一个他们都调用的生成相同URL的单一函数,则会更好 但是,更严重的问题是,您没有保存文件的代码。您创建了URL和AVAudioFile对象,但从未将任何内容保存到该文件中。使用

当我单击“保存”按钮时,会弹出一个警报,获取用户输入的文件保存名称。然后,当我点击播放按钮播放保存的文件时,它不会播放,我得到的是“没有文件”,所以我的问题是如何让它播放保存的文件

代码:


形成文件名的方式存在阻抗不匹配。在一个函数中,您使用的是URL。在另一个函数中,您使用的是路径字符串。他们没有得到同样的结果

如果您有一个他们都调用的生成相同URL的单一函数,则会更好

但是,更严重的问题是,您没有保存文件的代码。您创建了URL和AVAudioFile对象,但从未将任何内容保存到该文件中。使用AVAudioFile的方法是使用缓冲区和
writeFromBuffer:…
命令。你从不这样做,所以你什么都得不到

   @IBAction func saveFinalButton(sender: AnyObject) {
        var saveFileName = ""
        if saveFileName == "" {
            //alert view
            var alertViewControllerTextField: UITextField!

            let promptController = UIAlertController(title: "Type Something", message: nil, preferredStyle: .Alert)
            let ok = UIAlertAction(title: "OK", style: .Default, handler: { (action) -> Void in
                saveFileName = alertViewControllerTextField!.text
                //save file
                let fm = NSFileManager.defaultManager()
                let doc = fm.URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: true, error: nil)
                let outurl = doc!.URLByAppendingPathComponent("\(saveFileName).aac")
                saveFileURL = saveFileName


                var err : NSError?
                let outfile = AVAudioFile(forWriting: outurl, settings: [
                    AVFormatIDKey : kAudioFormatMPEG4AAC,
                    AVNumberOfChannelsKey : 1,
                    AVSampleRateKey : 22050,
                    AVEncoderBitRatePerChannelKey : 16
                    ], error: &err)

                var done = false
            })
            promptController.addAction(ok)
            promptController.addTextFieldWithConfigurationHandler { (textField) -> Void in
                alertViewControllerTextField = textField
            }

            presentViewController(promptController, animated: true, completion: nil)
        }
   }


    @IBAction func playSavedFile(sender: AnyObject) {
        let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
        let savedFileTest = documentsPath + "/" + saveFileURL + ".aac"
        let urlSaveFile = NSURL(fileURLWithPath: savedFileTest)

        var error:NSError?

        playSavedFile = AVAudioPlayer(contentsOfURL: urlSaveFile, error: &error)
        if (playSavedFile != nil) {
            println("file found")
        } else {
            println("No file")
        }
    }