我正在尝试在iOS应用程序中下载Parse.com上的一些简短声音文件。 该文件以前使用以下代码保存:
NSData *soundData = [NSData dataWithContentsOfURL:myURL];
parse_Sound = [PFFile fileWithName:@"XXYYZZ"
data:soundData];
[parse_Sound saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (!succeeded) {
NSLog(@"sound-upload NG”);
} else {
NSLog(@"sound-upload OK");
}];
}
}];
在调试控制台上看到消息,它显然有效。 现在我需要运行什么样的代码来检索(下载)声音文件? 我浏览了网络,但没有发现任何清晰的工作。
答案 0 :(得分:1)
您需要在某个地方保留对该文件的引用(最好是在它所属的PFObject
列中。)
如果您没有保留参考信息,那么您将无法检索已经上传的与任何对象无关的文件。
我建议您阅读Parse文档,了解iOS https://www.parse.com/docs/ios_guide#files/iOS
上的文件答案 1 :(得分:1)
要从服务器获取数据,您需要运行查询以询问该对象,但尚未将上传的文件与任何类中的列相关联。上传PFFile是iOS的两个步骤:
1)将PFFile上传到服务器
2)在回调中将PFFile与数据对象中的列相关联
NSData *soundData = [NSData dataWithContentsOfURL:myURL];
parse_Sound = [PFFile fileWithName:@"XXYYZZ"
data:soundData];
[parse_Sound saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (!succeeded) {
NSLog(@"sound-upload NG”);
} else {
NSLog(@"sound-upload OK");
PFObject *soundStuff = [PFObject objectWithClassName:@"Sounds"];
soundStuff[@"soundFile"] = parse_Sound;
[soundStuff saveInBackground];
}];
}
}];
现在要获取数据,您将在Sounds类上运行查询,该类将在soundFile列中包含声音数据:
PFQuery *query = [PFQuery queryWithClassName:@"Sounds"];
[query whereKey:@"someKey" equalTo:@"someValue"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
// The find succeeded.
// Do something with the found objects
for (PFObject *object in objects) {
NSLog(@"%@", object.objectId);
PFFile *soundFile = object[@"soundFile"];
NSData *soundData = [soundFile getData];
}
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
我还没有测试过这些代码,但它至少演示了所需的步骤,应该让你开始。
以下是documentation:
中的示例PFObject *jobApplication = [PFObject objectWithClassName:@"JobApplication"]
jobApplication[@"applicantName"] = @"Joe Smith";
jobApplication[@"applicantResumeFile"] = file;
[jobApplication saveInBackground];
然后获取数据:
PFFile *applicantResume = anotherApplication[@"applicantResumeFile"];
NSData *resumeData = [applicantResume getData];
请注意,file
与applicantResumeFile
类的JobApplication
列相关联,以便可以在查询中检索文件数据。