我已成功将音频文件保存到 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")
}
}
查官方的文档 https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/#//apple_ref/occ/instm/NSData/writeToFile:atomically:它应该看起来像这样(我不使用 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 http://www.ioscreator.com/tutorials/file-management-tutorial-ios8-swift)您可能会在其中获得更好的 Swift 文件处理示例。
Update
显然,块的两个参数都必须是可选的(参见here https://stackoverflow.com/questions/29600588/parse-file-query-and-swift-1-2-error-getdatainbackgroundwithblock)。您的结果块必须是类型(audioFile: NSData?, error: NSError?)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)