数据总是空的......不明白为什么

Hig*_*asy 1 mp4 nsurl nsdata ios

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");
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但数据从未存在过.

Rob*_*Rob 7

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

NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"mp4"];
NSData *data = [NSData dataWithContentsOfURL:url];
Run Code Online (Sandbox Code Playgroud)

或者您想要检索路径并使用路径:

NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];
NSData *data = [NSData dataWithContentsOfFile:path];
Run Code Online (Sandbox Code Playgroud)

正如bgoers所指出的,如果你有一条路径并需要一个文件URL,你可以使用fileURLWithPath,但我宁愿使用上述两种技术之一.无论如何,要使用fileURLWithPath,它如下:

NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];
NSURL *url = [NSURL fileURLWithPath:path];
NSData *data = [NSData dataWithContentsOfURL:url];
Run Code Online (Sandbox Code Playgroud)

  • 我相信他也可以使用`[NSURL fileURLWithPath:path]`来查找URL路由.但最好使用以上两种方法之一. (2认同)