2013-03-13 27 views
1
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 

我不知道爲什麼,但數據永遠不會存在。

+2

,你一定'存在於應用程序捆綁test.mp4'? – trojanfoe 2013-03-13 15:55:07

+0

可能重複的[URLWithString返回nil的資源路徑-iphone](http://stackoverflow.com/questions/2112927/urlwithstring-returns-nil-for-resource-path-iphone) – trojanfoe 2013-03-13 16:08:44

回答

7

您正在檢索文件路徑,然後將其用於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]; 
+0

你能解釋它爲什麼會失敗雖然?該URL顯示正確。 – trojanfoe 2013-03-13 15:59:27

+1

長話短說,你不能在iOS中很好地混合使用URL和文件路徑:) – bgoers 2013-03-13 16:00:19

+2

我相信他也可以使用'[NSURL fileURLWithPath:path]'沿着URL路徑走下去。但最好使用上述兩種方法之一。 – bgoers 2013-03-13 16:03:03

相關問題