无法将类型“(_) -> ()”的值转换为预期的参数类型“(() -> Void)?”

Posted

技术标签:

【中文标题】无法将类型“(_) -> ()”的值转换为预期的参数类型“(() -> Void)?”【英文标题】:Cannot convert value of type '(_) -> ()' to expected argument type '(() -> Void)?' 【发布时间】:2018-05-07 20:38:50 【问题描述】:

我正在将我的代码从 Swift 2 迁移到 Swift 4,但是我不确定为什么会出现此错误:

这是我的功能:

fileprivate func navigateToTagFriends(completion: @escaping (_ taggedUsers : [Athlete]?) -> Void) 
    // Tag Users when item is original content
    if self.parentContent == nil 
        self.state = .finished // Mark as finished so friends operation will execute
        if let tagController = UIStoryboard(type: .Capture).instantiateInitialViewController() as? TagViewController 
            tagController.tagCompletionBlock =  taggedUsers in
                self.presentingViewController?.dismiss(animated: true, completion: _ in
                    if let processingView = Bundle.main.loadNibNamed("ProcessingView", owner: self, options: nil)?[0] as? UIView 
                        let size = self.presentingViewController?.view.frame.size
                        processingView.frame = CGRect(x: 0, y: 0, width: size?.width ?? 0, height: size?.height ?? 0)
                        self.processingView = processingView
                        self.presentingViewController?.view.addSubview(processingView)
                    
                    completion(taggedUsers)

                )
            
            tagController.cancelBlock = 
                self.presentingViewController?.dismiss(animated: true, completion: nil)
            
            tagController.transitioningDelegate = self
            self.presentingViewController?.present(tagController, animated: true, completion: nil)
        
     else 
        completion(nil)
    


有人知道我为什么会收到此错误以及如何解决该错误吗?

【问题讨论】:

【参考方案1】:

从行中删除_ in

self.presentingViewController?.dismiss(animated: true, completion: _ in

基于dismiss 的docs,completion 回调不接受任何参数。

【讨论】:

以上是关于无法将类型“(_) -> ()”的值转换为预期的参数类型“(() -> Void)?”的主要内容,如果未能解决你的问题,请参考以下文章

错误:无法将类型“(_)->()”的值转换为预期的参数类型“(()-> Void)?”

firebase swift 3 转换:无法将类型“(_)->()”的值转换为预期的参数类型“((错误)-> Void)?

无法将类型“(_) -> ()”的值转换为预期的参数类型“(() -> Void)?”

SwiftUI 错误修复“无法将 'Binding<int>' 类型的值转换为预期类型 'Binding<_>?'”

搜索栏在 swift 3 中不起作用。无法将类型 (_) -> Bool 的值转换为预期的参数类型 NSPredicate

swift 4.2 无法将类型“(_)-> Void”的值转换为预期的参数类型“(()-> Void)?”