我已经使用CocoaPods将库MBDocCapture添加到了我的项目中。现在,正如其自述文件所建议的那样,我使我的视图控制器符合ImageScannerControllerDelegate
并将所有4种协议方法添加到了我的代码中:
extension DocumentUploaderViewController: ImageScannerControllerDelegate {
func imageScannerController(_ scanner: ImageScannerController, didFinishScanningWithResults results: ImageScannerResults) {
scanner.dismiss(animated: true)
}
func imageScannerController(_ scanner: ImageScannerController, didFinishScanningWithPage1Results page1Results: ImageScannerResults, andPage2Results page2Results: ImageScannerResults) {
scanner.dismiss(animated: true)
}
func imageScannerControllerDidCancel(_ scanner: ImageScannerController) {
scanner.dismiss(animated: true)
}
func imageScannerController(_ scanner: ImageScannerController, didFailWithError error: Error) {
scanner.dismiss(animated: true)
}
}
现在,Xcode(10.2.1)抱怨我仍然缺少一些协议存根:
类型'DocumentUploaderViewController'不符合协议'ImageScannerControllerDelegate'
您要添加协议存根吗?
当我按下Fix
时,Xcode会添加didFailWithError
方法:
func imageScannerController(_ scanner: ImageScannerController, didFailWithError error: Error) {
}
...然后抱怨我添加了对该方法的无效重新声明(因为它已经在这里!):
'imageScannerController(_:didFailWithError :)'的无效重新声明
我已经尝试过:
这些尝试都没有帮助。
有什么想法吗?
答案 0 :(得分:1)
您可能在项目中明确定义了一个Error
模型(结构或类),这会导致此问题。
要解决此问题,您有两种选择:
MyError
didFailWithError error: Swift.Error
当模型范围存在冲突时,始终会出现此错误。当前为extension DocumentUploaderViewController: ImageScannerControllerDelegate
编写的委托存根正在考虑在本地范围内定义的项目的Error
模型,而委托存根则需要在Swift中定义的Error
模型。
答案 1 :(得分:0)
检查是否已将委托设置为适当的视图控制器。像这样:
let scannerViewController = ImageScannerController()
scannerViewController.imageScannerDelegate = self
答案 2 :(得分:-1)
不手动添加方法。删除所有方法,并在xcode抱怨时-“类型'DocumentUploaderViewController'不符合协议'ImageScannerControllerDelegate' 您是否要添加协议存根?”
只需单击修复。你完成了。