11

有人能向我解释为什么下面的代码:NSURL isFileURL总是返回NO

NSString* filePathString = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; 

NSLog(@"%i", [[NSURL URLWithString:filePathString] isFileURL]); 
NSLog(@"%@", filePathString); 

输出:

“的/ var /移动/应用/ 28ADFC19-874C-4304- 94B5-F6441CAE9FAD/Documents“

这意味着此URL不是文件URL。显然,它是。


背景:

我试图使用AVCaptureMovieFileOutput写一部电影记录到一个文件,但该文件的URL我证明给出了错误:

*终止应用程序,由于未捕获异常'NSInvalidArgumentException',原因:'* - [AVCaptureMovieFileOutput startRecordingToOutputFileURL:recordingDelegate:] - 无法记录到URL/var/mobile/Applications/28ADFC19-874C-4304-94B5-F6441CAE9FAD/Documents/media/CrKNjNhe9so2LRnD9 iHK.mov,因为它不是一个文件的URL。'

这看起来像一个文件的URL给我,就像原来的例子。是什么赋予了?

回答

25

如果要从文件路径创建NSURL,则必须使用NSURL fileURLWithPath:。使用URLWithString假定该字符串是非文件URL。

NSURL只有在file://开头的文件的URL。