11

Czy ktoś może mi wyjaśnić, dlaczego następujący kod:bibliotece NSURL isFileURL zawsze zwraca NO

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

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

wyjścia:

„/ var/mobile/Applications/28ADFC19-874C-4304- 94B5-F6441CAE9FAD/Dokumenty "

Oznacza to, że ten adres URL nie jest plikiem URL. Oczywiście, że tak.


Tło:

Próbuję użyć AVCaptureMovieFileOutput napisać nagrywanie filmu do pliku, ale plik url Mam udowadniając daje błąd:

* Kończenie aplikacji z powodu nieprzechwyconego wyjątku "NSInvalidArgumentException", powód: "* - [AVCaptureMovieFileOutput startRecordingToOutputFileURL: recordingDelegate:] - Nie można nagrać do URL/var/mobile/Applications/28ADFC19-874C-4304-94B5-F6441CAE9FAD/Documents/media/CrKNjNhe9so2LRnD9 iHK.mov, ponieważ nie jest to adres URL pliku. "

To wygląda jak adres URL pliku, tak jak w oryginalnym przykładzie. Co daje?

Odpowiedz

25

Jeśli chcesz utworzyć NSURL ze ścieżki pliku, musisz użyć NSURL fileURLWithPath:. Użycie adresu URLWithString zakłada, że ​​ciąg nie jest adresem URL pliku.

NSURL to adres URL pliku, tylko jeśli zaczyna się od file://.