NSURL isFileURL始终返回NO

时间:2012-11-26 00:40:37

标签: ios filesystems nsurl nsfilemanager avcapturemoviefileoutput

有人可以向我解释为什么以下代码:

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

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

输出:

0

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

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


背景

我正在尝试使用AVCaptureMovieFileOutput将电影录制内容写入文件,但我正在证明的文件网址会出错:

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

对我来说,这就像一个文件网址,就像原始示例一样。是什么给了什么?

1 个答案:

答案 0 :(得分:30)

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

NSURL仅在文件网址以file://开头时才会显示。