有人可以向我解释为什么以下代码:
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。'
对我来说,这就像一个文件网址,就像原始示例一样。是什么给了什么?
答案 0 :(得分:30)
如果要从文件路径创建NSURL
,则必须使用NSURL fileURLWithPath:
。使用URLWithString
假定字符串是非文件URL。
NSURL
仅在文件网址以file://
开头时才会显示。