【问题标题】:Cannot assign value of type 'Void' (aka '()') to type '() -> Void' [duplicate]无法将类型“Void”(又名“()”)的值分配给类型“()-> Void”[重复]
【发布时间】:2017-09-08 14:11:16
【问题描述】:

有一个UIView 的类实例,其作用类似于一个按钮。 它具有以下属性:

public var endPressAction:(()->Void)?

还有一个带有方法的控制器:

func didPressCell(_ indexPath: IndexPath){

我正在尝试将控制器的方法作为参数传递给“按钮”,如下所示:

button.endPressAction = self.didPressCell(indexPath)

但我得到了错误:

无法将类型“Void”(又名“()”)的值分配给类型“() -> Void”

有人知道转换方法吗?

【问题讨论】:

    标签: swift compiler-errors void type-mismatch


    【解决方案1】:

    我找到了一种转换方式:

    button.endPressAction = { self.didPressCell(indexPath) }
    

    【讨论】:

    • 顺便说一下,这段代码引入了一个强引用循环。您应该在此闭包中使用 [weak self]unowned self] 模式。
    猜你喜欢
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2017-09-21
    相关资源
    最近更新 更多