问题
I have a protocol:
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
}
}
}
Anyone can help ?
回答1:
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
}
回答2:
In this case, you want to use the '===' operator. Just make ProfileManagerDelegete conform to AnyObject.
来源:https://stackoverflow.com/questions/34325725/swift-binary-operator-cannot-be-applied-to-operands-of-type-protocol