struct VideoPicker: UIViewControllerRepresentable { @Environment(.presentationMode) private var presentationMode let sourceType: UIImagePickerController.SourceType // let onImagePicked: (UIImage) -> Void let onURLPicked: (URL) -> Void final class Coordinator: NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate { @Binding private var presentationMode: PresentationMode private let sourceType: UIImagePickerController.SourceType private let onURLPicked: (URL) -> Void init(presentationMode: Binding<PresentationMode>, sourceType: UIImagePickerController.SourceType, onURLPicked: @escaping (URL) -> Void) { presentationMode = presentationMode self.sourceType = sourceType self.onURLPicked = onURLPicked } func imagePickerController( picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { // let uiImage = info[UIImagePickerController.InfoKey.originalImage] as! UIImage // onImagePicked(uiImage) if let url = info[.mediaURL] as? URL{ onURLPicked(url) } presentationMode.dismiss() } func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { presentationMode.dismiss() } } func makeCoordinator() -> Coordinator { return Coordinator(presentationMode: presentationMode, sourceType: sourceType, onURLPicked: onURLPicked) } func makeUIViewController(context: UIViewControllerRepresentableContext<VideoPicker>) -> UIImagePickerController { let picker = UIImagePickerController() picker.sourceType = sourceType picker.delegate = context.coordinator picker.mediaTypes = ["public.movie"] return picker } func updateUIViewController(_ uiViewController: UIImagePickerController, context: UIViewControllerRepresentableContext<VideoPicker>) { } }这段代码获取的url中绝对路径不准确
时间: 2023-07-15 14:15:54 浏览: 41
获取的 URL 中的路径可能是相对路径,而不是绝对路径。你可以使用 `FileManager` 类中的 `url(for:in:appropriateFor:create:)` 方法来获取正确的绝对路径。
例如,如果你想获取一个名为 `video.mp4` 的视频文件的绝对路径,你可以使用以下代码:
```swift
guard let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {
return
}
let videoURL = documentsURL.appendingPathComponent("video.mp4")
// Get the absolute URL path
let absoluteVideoURL = try! videoURL.resolvingSymlinksInPath()
print("Absolute video URL: \(absoluteVideoURL)")
```
在这个例子中,我们首先获取了应用程序的文档目录,并将其存储在 `documentsURL` 常量中。然后,我们使用 `appendingPathComponent` 方法将文件名添加到 URL 中,以获取视频文件的 URL。最后,我们使用 `resolvingSymlinksInPath` 方法获取 URL 的绝对路径。
相关问题
Cannot resolve org.mapstruct:mapstruct:${org.mapstruct.version}
"Cannot resolve org.mapstruct:mapstruct:${org.mapstruct.version}" 这个错误通常是由于在项目的依赖配置中找不到对应的mapstruct版本所导致的。根据引用和引用的内容,你可以尝试以下几个解决方法:
1. 确认项目的pom.xml(或其他构建文件)中是否正确引入了mapstruct和mapstruct-processor的依赖,并且版本号是正确的。比如,确保以下这段代码被正确添加到依赖配置中:
```xml
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
```
2. 确认你的项目使用的mapstruct和mapstruct-processor的版本是否匹配。根据引用的内容,mapstruct和lombok版本需要匹配,所以你还需要检查lombok的版本是否与mapstruct的版本兼容。
3. 如果仍然无法解决问题,你可以尝试在项目的构建工具(如Maven或Gradle)中清除本地缓存并重新下载依赖,以确保你使用的是最新的依赖版本。
总之,要解决"Cannot resolve org.mapstruct:mapstruct:${org.mapstruct.version}"的问题,请确保正确配置了mapstruct和mapstruct-processor的依赖,并且版本号是正确的,并且检查mapstruct和lombok的版本是否匹配。如果问题仍然存在,可以尝试清除本地缓存并重新下载依赖。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [mapstruct 1.2.0.Final 使用问题及配置](https://blog.csdn.net/spjhandsomeman/article/details/122359844)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
org.mapstruct:mapstruct:1.5.5.Final报错
根据提供的引用内容,org.mapstruct:mapstruct:1.5.5.Final报错的原因是由于使用了错误的版本号。根据引用中的内容,正确的使用方法是在pom文件中引入mapstruct的两个依赖,分别是org.mapstruct:mapstruct-jdk8:1.2.0.Final和org.mapstruct:mapstruct-processor:1.2.0.Final。
根据引用中提供的链接,可以参考该链接中的内容来了解mapstruct的使用方法。
而引用中提到的原因是在编译时未生成mapstruct的impl文件,导致在执行时出现NoClassDefFoundError错误。这个错误的根本原因是在pom文件中未正确引入org.mapstruct:mapstruct-processor:1.2.0.Final依赖。
综上所述,要解决org.mapstruct:mapstruct:1.5.5.Final报错的问题,你需要将错误的版本号改为正确的版本号org.mapstruct:mapstruct-jdk8:1.2.0.Final,并在pom文件中添加正确的依赖org.mapstruct:mapstruct-processor:1.2.0.Final。这样就能解决该报错问题。