0

这是我显示图像选择器的代码:

        let pickerController = UIImagePickerController()
        pickerController.delegate = self
        pickerController.allowsEditing = false
        pickerController.mediaTypes = [kUTTypeMovie as String]
        pickerController.sourceType = .photoLibrary

在代表中,我有:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    guard let videoURL = info[.mediaURL] as? URL
        else { return }
    do {
        let newFileLocation = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString + ".mov")
        FileManager.default.moveItem(at: videoURL, to: newFileLocation)
    } catch {
        // “trim.92501481-FA5B-490C-8F55-575DE076C8A1.MOV” couldn’t be moved because you don’t have permission to access “tmp”
    }
}

我回去在 iOS 13.5 上尝试了这个,它工作正常,但在 iOS 13.7 中我遇到了这个奇怪的错误。

4

2 回答 2

1

啊简单的修复,改变:

FileManager.default.moveItem(at: videoURL, to: newFileLocation)

FileManager.default.copyItem(at: videoURL, to: newFileLocation)
于 2020-09-23T02:40:36.597 回答
0

我刚刚发现了同样的问题和解决方案。有趣的是,如果您为相机执行此操作,则移动文件是有效的。但是,如果您是为相机胶卷执行此操作,则不会。当然更糟糕的是,Apple 改变了这种行为,却没有在任何地方记录它。出于明显的效率原因,我多年来也一直在使用“移动”。

此外,错误表明该应用程序没有目标文件夹的权限,而实际上源文件夹缺少权限。所以这里没有iOS的帮助。

于 2021-09-12T05:29:24.733 回答