本文介绍了Swift:二元运算符“=="不能应用于“协议"类型的操作数;的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个协议:

protocol ProfileManagerDelegete {
func dataHaveUpdated(type: ReturnType)

}

并创建一个协议数组,并添加/删除侦听器:

and create a protocol array, and add/remove listener:

var listeners: [ProfileManagerDelegete] = []

func addListener(listener: ProfileManagerDelegete) {
    listeners.append(listener)
}

func removeLister(listener: ProfileManagerDelegete) {
    for lis in listeners {
        if lis == listener { // this line error
            //remove listener
        }
    }
}

有人可以帮忙吗?

推荐答案

因为你还没有告诉 Swift 如何比较 ProfileManagerDelegete 类型的 2 个对象.定义一个函数:

Because you have not told Swift how to compare 2 objects of type ProfileManagerDelegete. Define a function:

protocol ProfileManagerDelegete {
    func dataHaveUpdated(type: ReturnType)
}

func == (lhs: ProfileManagerDelegete, rhs: ProfileManagerDelegete) -> Bool {
    // decide if they are equal
}

这篇关于Swift:二元运算符“=="不能应用于“协议"类型的操作数;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 03:56