【问题标题】:Data is always null... no idea why数据总是空的......不知道为什么
【发布时间】:2013-03-01 16:08:52
【问题描述】:
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];

NSLog(@"Path: %@", path);

NSURL *url = [NSURL URLWithString:path];

NSLog(@"URL: %@", url);

NSData *data = [NSData dataWithContentsOfURL:url];

NSLog(@"Data exists? %@", data ? @"yes" : @"no");

test.mp4 在我的包中,但这始终是输出

2013-03-13 11:50:29.444 videoAppPrototype[28625:907] Path: /var/mobile/Applications/D66DD820-4DE1-4E45-9495-9BACF130E368/videoAppPrototype.app/test.mp4
2013-03-13 11:50:29.446 videoAppPrototype[28625:907] URL: /var/mobile/Applications/D66DD820-4DE1-4E45-9495-9BACF130E368/videoAppPrototype.app/test.mp4
2013-03-13 11:50:29.448 videoAppPrototype[28625:907] Data exists? no

我不知道为什么,但数据永远不存在。

【问题讨论】:

标签: ios nsdata nsurl mp4


【解决方案1】:

您正在检索文件路径,然后将其用作 URL。您要么想要检索 URL 并使用 URL:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"mp4"];
NSData *data = [NSData dataWithContentsOfURL:url];

或者你想检索路径并使用路径:

NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];
NSData *data = [NSData dataWithContentsOfFile:path];

正如 bgoers 所指出的,如果您有路径并且需要文件 URL,则可以使用 fileURLWithPath,尽管我宁愿使用上述两种技术之一。反正要使用fileURLWithPath,如下:

NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];
NSURL *url = [NSURL fileURLWithPath:path];
NSData *data = [NSData dataWithContentsOfURL:url];

【讨论】:

  • 你能解释为什么它会失败吗?网址显示正确。
  • 长话短说,你不能在 iOS 中很好地混合 URL 和文件路径 :)
  • 我相信他也可以使用[NSURL fileURLWithPath:path] 沿着 URL 路线走下去。但最好使用上述两种方法之一。
  • @trojanfoe URLForResource 的 URL 以 file://localhost/ 开头,后跟路径。当您只是检索路径时,您会错过它。 pathForResource 的结果不是有效的 URL 字符串。
  • @Rob 是的,我知道;这就是为什么这个问题是骗人的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-15
  • 1970-01-01
相关资源
最近更新 更多