当在swift中检查照片库是否存在视频的mediaUrl时,FileManager总是给出false



我有一个条件来保存从iPhone照片库中选择的视频路径。ImagePicker控制器用于保存媒体Url。我已成功选择视频并将路径保存到"用户默认值",但当以后无法识别照片库中是否存在相同的媒体文件时。我正在添加下面的代码。

下面的类是从照片库中选择任何视频,并通过视图模型功能保存路径。

class LinkVideoViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
func openGallery() {

if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
let myPickerController = UIImagePickerController()
myPickerController.delegate = self
myPickerController.sourceType = .photoLibrary
myPickerController.mediaTypes = ["public.movie"]
myPickerController.videoQuality = .typeHigh
self.present(myPickerController, animated: true, completion: nil)
}
}

}
extension LinkVideoViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
if let videoUrl = info[UIImagePickerController.InfoKey.mediaURL] as? URL {
let urlString = videoUrl.relativePath
print(FileManager.default.fileExists(atPath: videoUrl.relativePath))
viewModel.selectVideo(selectedVideoPath: urlString)
self.dismiss(animated: true, completion: nil)
}
}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
self.dismiss(animated: true, completion: nil)
}
}

在下面的类中,我们检测照片库中是否存在相同的文件。

override func start() {
if let videoPath = UserDefaultValues.videoGuidedPath, !videoPath.isEmpty, let url = URL(string: videoPath) {
if FileManager.default.fileExists(atPath: url.relativePath) {

// if file exist then play video
} else {
//  show video does not exist error view
}
} else {
// if not path is saved then probably user has not selected, so give an option for request permission
}
}

我检查过了,值还是一样的FileManager文件Exist函数每次都会给出一个假值。我不明白背后的原因。我也使用了路径来代替相对路径,但错误是相同的。

文件管理器有时可能很棘手,

FileManager.default.fileExists(atPath: "file:///Users/Mac/Library/Developer/CoreSimulator/Devices/A1AA0615-4AE4-4710-9E15-A6973BFFA9B8/data/Media/DCIM/100APPLE/IMG_0007.MP4") 
// return false
FileManager.default.fileExists(atPath: "Users/Mac/Library/Developer/CoreSimulator/Devices/A1AA0615-4AE4-4710-9E15-A6973BFFA9B8/data/Media/DCIM/100APPLE/IMG_0007.MP4") 
// return true

相关内容

最新更新