15

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

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

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

输出:

0

“/var/mobile/Applications/28ADFC19-874C-4304-94B5-F6441CAE9FAD/文档”

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


背景:

我正在尝试使用 AVCaptureMovieFileOutput 将电影录制写入文件,但我证明的文件 url 给出了错误:

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

对我来说,这看起来像是一个文件 URL,就像原始示例一样。是什么赋予了?

4

1 回答 1

37

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

NSURL仅当以 . 开头时,它才是文件URL file://

于 2012-11-26T00:43:48.473 回答