如何解决SWIFTUI警告imagePickerController几乎匹配-仅在现有的swift项目文件中发生
我正在升级具有一些快速视图的现有应用程序。现在我得到警告:
实例方法'imagePickerController(:didFinishPickingMediaWithInfo :)'几乎与协议'UIImagePickerControllerDelegate'的可选要求'imagePickerController(:didFinishPickingMediaWithInfo :)'匹配
功能:
public func imagePickerController(_ picker: UIImagePickerController,didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
if let image = info[.originalImage] as? UIImage {
self.onImagePicked(image)
}
self.onDismiss()
}
此外,我还会收到错误消息:
无法根据成员'originalImage'推断上下文基础
有趣的是,如果我将代码复制到新项目中,一切都很好(没有警告,没有错误)。为了检查我是否可以从现有项目中的其他视图/方法中获得某些效果,我复制了现有项目并删除了所有其他文件,但带有图像选择器的文件除外-仍然是警告和错误。
是否可能有任何设置或其他问题?任何帮助都令人感激不已-在第三天开始工作....
整个代码是:
import SwiftUI
public struct ImagePickerView: UIViewControllerRepresentable {
private let sourceType: UIImagePickerController.SourceType
private let onImagePicked: (UIImage) -> Void
@Environment(\.presentationMode) private var presentationMode
public init(sourceType: UIImagePickerController.SourceType,onImagePicked: @escaping (UIImage) -> Void) {
self.sourceType = sourceType
self.onImagePicked = onImagePicked
}
public func makeUIViewController(context: Context) -> UIImagePickerController {
let picker = UIImagePickerController()
picker.sourceType = self.sourceType
picker.delegate = context.coordinator
return picker
}
public func updateUIViewController(_ uiViewController: UIImagePickerController,context: Context) {}
public func makeCoordinator() -> Coordinator {
Coordinator(
onDismiss: { self.presentationMode.wrappedValue.dismiss() },onImagePicked: self.onImagePicked
)
}
public class Coordinator: NSObject,UINavigationControllerDelegate,UIImagePickerControllerDelegate {
private let onDismiss: () -> Void
private let onImagePicked: (UIImage) -> Void
init(onDismiss: @escaping () -> Void,onImagePicked: @escaping (UIImage) -> Void) {
self.onDismiss = onDismiss
self.onImagePicked = onImagePicked
}
public func imagePickerController(_ picker: UIImagePickerController,didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
if let image = info[.originalImage] as? UIImage {
self.onImagePicked(image)
}
print("vor dismiss")
self.onDismiss()
}
public func imagePickerControllerDidCancel(_: UIImagePickerController) {
self.onDismiss()
}
}
}
项目格式为Xcode 12.0兼容,iOS部署目标为14.0, 该项目最初还包括观看
解决方法
得到答案,无法解释,而是代替
public func imagePickerController(_ picker: UIImagePickerController,didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
它可以正常工作
func imagePickerController(_ picker: UIImagePickerController,didFinishPickingMediaWithInfo info: [String : Any]) {
但是,只要有人能解释-问题就解决了
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。