无法将类型“(_) -> ()”的值转换为预期的参数类型“(() -> 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