Swift:二元运算符 '==' 不能应用于 "protocol"类型的操作数

标签 swift protocols

我有一个协议(protocol):

protocol ProfileManagerDelegete {
func dataHaveUpdated(type: ReturnType)

并创建一个协议(protocol)数组,并添加/删除监听器:

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 如何比较 2 个 ProfileManagerDelegete 类型的对象。定义一个函数:

protocol ProfileManagerDelegete {
    func dataHaveUpdated(type: ReturnType)
}

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

关于Swift:二元运算符 '==' 不能应用于 "protocol"类型的操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34325725/

相关文章:

soap - 传输独立/依赖协议(protocol)是什么意思?

ios - 如何将返回类型表达为类的实例,该类也可以快速确认协议(protocol)

ios - Realm 未正确删除

arrays - 初始化类时设置数组类型

快速序列变形

xcode - swift fatal error : Array index out of range

ios - 获取 tableViewCells 中 tableView.visibleCells 的索引

c - Git HTTP 错误 'fatal: protocol error: bad line length character: '

macos - 我如何知道哪个对象正在向委托(delegate)询问信息?

ios - 如何强制数组对象符合特定协议(protocol)?