如何上传录制的音频文件进行解析?

时间:2015-04-20 05:31:21

标签: ios swift parse-platform avfoundation

发布我的代码here, was getting clipped below

根据上面的代码,我在一个已知的文件路径位置sound.caf创建一个名为soundfileURL的音频文件。

我的问题是如何将此文件上传到Parse?如何从路径soundfileURL中获取代码中的文件对象。

我下面的尝试显然需要工作。我还没有运行它,因为我不知道如何将sound.caf转换为PFFile并上传到Parse。

func addNamestoParse(obj: Music) {
    println("Doing Parse Stuff now")
    self.showActivityIndicatory(true)

    var className = PFObject(className: "musicrecording")
    className.setObject(obj.name, forKey: "nameofmusic")
    className.setObject(obj.createdOn, forKey: "datcreated")

如何转换SOUND.CAF文件以便在此处发布&上传到游戏?

    className.saveInBackgroundWithBlock {
        (success: Bool, error: NSError?) -> Void in

        if success == true {



        } else {

            println(error)

        }
    }

}

感谢 David Jirman ,Objective-C等价物能够推断出Swift Equivalent。以下是代码。

func addNamestoParse(obj: Name) {
    println("Doing Parse Stuff now")

    var className = PFObject(className: "namerecordings")
    className.setObject(obj.name, forKey: "babyname")
    className.setObject(obj.nameSubmitter, forKey: "submittedby")
    className.saveInBackgroundWithBlock {
        (success: Bool, error: NSError?) -> Void in

        if success == true {
            let audioFile = PFFile(name: "mysound.caf", data: NSData(contentsOfURL: self.soundFileURL)!)
            className["audioFile"] = audioFile

            className.saveInBackgroundWithBlock{(success: Bool, error: NSError?) -> Void in

                if success == false {
                    println("error in uploading audio file")
                } else {
                    println("posted successfully")

                }
            }

        } else {

            println(error)

        }
    }

}

2 个答案:

答案 0 :(得分:5)

https://www.youtube.com/watch?v=4qj1piMAPE0的精彩教程之后,我的解决方案是在Swift中:

    let path = getCacheDirectory().stringByAppendingPathComponent(fileName)
    let filePath = NSURL(fileURLWithPath: path)

    var dataToUpload : NSData = NSData(contentsOfURL: filePath!)!

    let soundFile = PFFile(name: fileName, data: dataToUpload)
    var userSound = PFObject(className:"upload")
    userSound["name"] = "Sara"
    userSound["sound"] = soundFile
    userSound.saveInBackground()

其中getCacheDirectory()是教程中使用的函数

答案 1 :(得分:4)

我对斯威夫特并不熟悉,而是采用了旧的方式"原则应该是一样的。你需要创建一个' PFFile'并将其分配给您的音乐录制的相应PFFile属性'类。例如:

PFFile *pfFile = [PFFile fileWithData:data];
PFObject *pfObject = [PFObject objectWithClassName:@"musicrecording"];
[pfObject setObject:pfFile forKey:@"musicFile"];
[pfObject saveInBackground];

保存包含PFFile对象的对象时,它会自动上传。这有帮助吗?