11

有人能向我解釋爲什麼下面的代碼:NSURL isFileURL總是返回NO

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

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

輸出:

「的/ var /移動/應用/ 28ADFC19-874C-4304- 94B5-F6441CAE9FAD/Documents「

這意味着此URL不是文件URL。顯然,它是。


背景:

我試圖使用AVCaptureMovieFileOutput寫一部電影記錄到一個文件,但該文件的URL我證明給出了錯誤:

*終止應用程序,由於未捕獲異常'NSInvalidArgumentException',原因:'* - [AVCaptureMovieFileOutput startRecordingToOutputFileURL:recordingDelegate:] - 無法記錄到URL/var/mobile/Applications/28ADFC19-874C-4304-94B5-F6441CAE9FAD/Documents/media/CrKNjNhe9so2LRnD9 iHK.mov,因爲它不是一個文件的URL。'

這看起來像一個文件的URL給我,就像原來的例子。是什麼賦予了?

回答

25

如果要從文件路徑創建NSURL,則必須使用NSURL fileURLWithPath:。使用URLWithString假定該字符串是非文件URL。

NSURL只有在file://開頭的文件的URL。