Swift:二元运算符“==”不能应用于“协议”类型的操作数

Cin*_*ndy 5 protocols swift

我有一个协议:

protocol ProfileManagerDelegete {
func dataHaveUpdated(type: ReturnType)
Run Code Online (Sandbox Code Playgroud)

}

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

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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙吗?

Cod*_*ent 4

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

protocol ProfileManagerDelegete {
    func dataHaveUpdated(type: ReturnType)
}

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