类和协议存在不适用于自定义协议

时间:2017-10-31 09:29:32

标签: ios swift swift4

我定义了一个自定义协议并使用了Class and Protocol Existential,这是Swift 4中的新功能。它在运行时出错。这是我的代码:

protocol CustomProtocol: UIScrollViewDelegate {}

var test: UIViewController & CustomProtocol = UITableViewController() as! UIViewController & CustomProtocol

我尝试了空协议。 enter image description here

协议确认给另一个人。 enter image description here 请帮帮我,谢谢!

1 个答案:

答案 0 :(得分:1)

您想要实现的目标是 Swift4 中的协议组合

在您的代码中:

protocol CustomProtocol: UIScrollViewDelegate {}

var test: UIViewController & CustomProtocol = UITableViewController() as! UIViewController & CustomProtocol

test将接受类型为UIViewController且符合CustomProtocol 的任何内容。

您正在为其分配UITableViewController的对象。但UITableViewController不符合CustomProtocol因此导致问题。

示例:

protocol CustomProtocol: UIScrollViewDelegate
{

}

class TableViewController: UITableViewController, CustomProtocol
{

}

class ViewController: UIViewController
{
    override func viewDidLoad()
    {
        super.viewDidLoad()
        var test: UIViewController & CustomProtocol = TableViewController() //HERE..
    }
}