所以我使用的是Parse(很可爱),我正在从解析服务器下载文件(短视频文件 - 不超过1mb)到我的应用程序。现在它的工作方式是(通过文档)..
PFFile* videoFile = [[tempArray objectAtIndex:i] objectForKey:@"track"];
[videoFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
NSString* dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSURL* videoURL = [NSURL URLWithString:dataString];
// now do something with this videoURL (i.e. play it!)
[data writeToFile:@"trackFile" atomically:YES];
NSURL *filePath = [NSURL fileURLWithPath:@"trackFile"];
NSLog(@"File Path: %@",filePath);
AVAsset* asset = [AVAsset assetWithURL:filePath];
AVPlayerItem* playerItem = [[AVPlayerItem alloc] initWithAsset:asset];
}
}
在下载完成时,您将被禁止从数据创建一个字符串,然后从该字符串创建一个url。唯一的问题是 - dataString总是返回NULL / nil。我已经确认data属性不是空的,实际上确实保存了视频数据。为什么会这样?任何帮助将不胜感激。提前谢谢!
答案 0 :(得分:0)
我已经确认数据属性不为空,实际上确实保存了视频数据。
视频数据不是UTF-8字符串。它绝对不是URL的UTF-8字符串表示。所以,当你说“将这个视频数据解释为UTF-8”时,Cocoa正确地回答它不是UTF-8(因为它是视频数据)。
最简单的解决方案是将此内容写入磁盘,然后播放该文件。
答案 1 :(得分:0)
首先需要确定的事情:
假设NSData对象持有url并且它的长度大于0,那么你可能想尝试:
NSString* dataString = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];