NSURL isFileURL всегда возвращает NO

Может кто-нибудь объяснить мне, почему следующий код:

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

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

выходы:

0

"/VAR/мобильного/Применения/28ADFC19-874C-4304-94B5-F6441CAE9FAD/Документы"

Это означает, что этот URL-адрес не является URL-адресом файла. Очевидно, это так.


Фон:

Я пытаюсь использовать AVCaptureMovieFileOutput для записи видеозаписи в файл, но файл url, который я доказываю, дает ошибку:

* Завершение приложения из-за неперехваченного исключения "NSInvalidArgumentException", причина: "* - [AVCaptureMovieFileOutput startRecordingToOutputFileURL: recordDelegate:] - Невозможно записать URL/var/mobile/Applications/28ADFC19-874C-4304 -94B5-F6441CAE9FAD/Documents/media/CrKNjNhe9so2LRnD9iHK.mov, потому что это не URL-адрес файла. '

Это выглядит как URL-адрес файла, как и исходный пример. Что дает?

Ответ 1

Если вы хотите создать NSURL из пути к файлу, вы должны использовать NSURL fileURLWithPath:. Использование URLWithString предполагает, что строка является не файловым URL.

An NSURL - это URL-адрес файла, только если он начинается с file://.