当前位置:  开发笔记 > IOS > 正文

无法转换为`AnyObject?`?

如何解决《无法转换为`AnyObject?`?》经验,为你挑选了1个好方法。

在创建一个快速的iOS应用程序时,我需要在父视图控制器之外处理UIButton印刷机的事件,所以我创建了一个(非常简单的)协议来将该责任委托给另一个类:

import UIKit
protocol MyButtonProtocol {
    func buttonPressed(sender: UIButton)
}

但是,当我尝试将addTarget添加到具有该协议的UIButton时,我收到此错误:Cannot convert value of type 'MyButtonProtocol' to expected argument type 'AnyObject?'.不应该有任何东西可以转换成AnyObject??这是我的主要代码:

import UIKit
class MyView: UIView {
    var delegate: MyButtonProtocol
    var button: UIButton
    init(delegate: MyButtonProtocol) {
        self.delegate = delegate
        button = UIButton()
        //... formatting ...
        super.init(frame: CGRect())
        button.addTarget(delegate, action: "buttonPressed:", forControlEvents: .TouchUpInside)
        addSubview(button)
        //... more formatting ...
    }
}

提前致谢.



1> Martin R..:

AnyObject是所有符合的协议.要定义只能由类采用的协议,请添加 : class到定义中:

protocol MyButtonProtocol : class {
    func buttonPressed(sender: UIButton)
}

没有这个修改,

var delegate: MyButtonProtocol

可以是一个structenum类型,不可转换为AnyObject.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有