如何从解析swift中检索音频文件

时间:2016-01-12 21:37:54

标签: swift parse-platform avaudioplayer

我已成功将音频文件保存到Parse,但我正在努力再次下载它。我无法通过getDataInBackgroundWithBlock找出块应该是什么。以及如何实际保存文件。任何帮助非常感谢!

let query = PFQuery(className: "wordRecordings")
query.whereKey("wordName", equalTo: "\(joinedWord)")

query.findObjectsInBackgroundWithBlock { (objects:[PFObject]?, error:NSError?) -> Void in

    if error == nil{                        
       for object in objects! {
            let audioFile = object["audioFile"] as! PFFile
            audioFile.getDataInBackgroundWithBlock{ (audioFile: NSData, error:NSError?) -> Void in // THIS BLOCK ISNT CORRECT...
               if error == nil {
               let audioFile = AudioFile(data: audioFile) // THIS WORKS FOR IMAGES BUT NOT AUDIO - HOW DO I CREATE AN AUDIO FILE
               }
              }
             }
            } else {   
               print("Error: \(error!) \(error!.userInfo)")
           }
         }

感谢@David,下面是一个带路径代码的工作解决方案。

let fileString = "\(fileName)"
let documentsDirectory = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
let path = documentsDirectory.URLByAppendingPathComponent(fileString)

audioFile.getDataInBackgroundWithBlock { (audioFile:NSData?, error:NSError?) -> Void in
         if error == nil {
           audioFile.writeToURL(path, atomically: true)
         } else {
         print("error with getData")
         }
  }

1 个答案:

答案 0 :(得分:2)

检查官方documentation它应该是这样的(我不会使用Swift所以请耐心等待我):

audioFile.getDataInBackgroundWithBlock{ (audioFile: NSData?, error:NSError?) -> Void in
    if error == nil {
        let path = "path-to-your-file"
        if !audioFile.writeToFile(path, atomically: true){
            print("Error saving")
        }
    }
}

我建议您阅读一些教程(例如here),在那里您可以获得更好的Swift文件处理示例。

更新

显然两个块的参数都必须是可选项(参见here)。您的结果块必须是(audioFile: NSData?, error: NSError?)

类型