SWIFTUI警告imagePickerController几乎匹配-仅发生在现有的swift项目文件中



我正在升级一个具有一些快速视图的现有应用程序。现在我收到警告:

实例方法"imagePickerController(:didFinishPickingMediaWithInfo:("几乎匹配协议"UIImagePickerContrilerDelegate"的可选要求"imagePickerController(:DidFinishPixingMediaWithinfo:(">

函数:

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]) {

然而,如果有人能解释的话,这个问题就解决了——非常欢迎

最新更新